在R中,是否有内置函数用于迭代函数n次?

时间:2015-05-20 08:53:59

标签: r loops

假设我有一个变量x和一个函数f。我想在f上执行x,然后在结果n上再次执行iterate <- function(x, f, n) { assertthat::assert_that(n >= 0) if (n > 0) { for (i in 1:n) { x <- f(x) } } x }

我为此构建了一个简单的函数:

iterate(256, f = sqrt, n = 3)

其工作原理如下:

echo password >> ftpcmd.dat

这已经内置到R?

1 个答案:

答案 0 :(得分:5)

您可以使用函数式编程方法,ReduceCompose来自functional包。我们的想法是创建您想要的功能列表,并使用Compose链接它们。您只需将此功能应用于x

x = 256
n = 3
f = sqrt

library(functional)

Reduce(Compose, replicate(n, f))(x)
#[1] 2

或者使用freduce中的magrittr

library(magrittr)

freduce(x, replicate(n, f))
#[1] 2