[R-es] Aplicar una función repetidamente

Carlos J. Gil Bellosta cgb en datanalytics.com
Jue Mayo 12 12:38:42 CEST 2016


g <- function(f, x, k){
  for(i in 1:k)
    x <- f(x)
  x
}

g(sqrt, 256, 3)

Un saludo,

Carlos J. Gil Bellosta
http://www.datanalytics.com


El 12 de mayo de 2016, 10:40, rubenfcasal <rubenfcasal en gmail.com> escribió:

> Yo de primeras lo haría así:
>
> f <- function(x) return(x^2)
>
> recursiva <- function(x, fun, k) {
>   if (k > 1) return(fun(recursiva(x, fun, k-1))) else return(fun(x))
> }
>
> > recursiva(2,f,1)
> [1] 4
> > recursiva(2,f,2)
> [1] 16
> > recursiva(2,f,3)
> [1] 256
> > f(f(f(2)))
> [1] 256
>
> Un saludo,
>     Rubén FC
>
>
>
> El 12/05/2016 a las 10:29, Carlos Ortega escribió:
>
>> Hola Jorge,
>>
>> Creo que la función que buscas está del lado de las varias
>> implementaciones
>> que tiene "R" del lado de la "Programación Funcional".
>> En particular miraría la función "Reduce()".
>> Y también la función "accumulate()" del paquete de Hadley Wickham "purr"
>> (Functional Programming Tools).
>>
>> Saludos,
>> Carlos Ortega
>> www.qualityexcellence.es
>>
>> El 12 de mayo de 2016, 5:39, Jorge I Velez <jorgeivanvelez en gmail.com>
>> escribió:
>>
>> Hola a todos,
>>>
>>> Quisiera aplicar una función f(x) un total de k veces de manera
>>> recursiva.
>>> En pseudo código sería algo como
>>>
>>> Si k = 1, calcular f(x);
>>> Si k = 2, calcular f(f(x));
>>> Si k = 3, calcular f(f(f(x))).
>>>
>>> Al final me gustaria tener una función g cuyos argumentos sean x y el
>>> valor
>>> de k. Así,
>>>
>>> g(x, k = 2)
>>>
>>> daría como resultado f(f(x)).
>>>
>>> Cualquier ayuda y/o sugerencia será más que bienvenida.
>>>
>>> Muchísimas gracias,
>>> Jorge Velez.-
>>>
>>>          [[alternative HTML version deleted]]
>>>
>>> _______________________________________________
>>> R-help-es mailing list
>>> R-help-es en r-project.org
>>> https://stat.ethz.ch/mailman/listinfo/r-help-es
>>>
>>>
>>
>>
> _______________________________________________
> R-help-es mailing list
> R-help-es en r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
>

	[[alternative HTML version deleted]]



Más información sobre la lista de distribución R-help-es