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

sdg*_*sdh 3 loops r

假设我有一个变量x和一个函数f.我想执行fx的结果,然后再次,n倍.

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

iterate <- function(x, f, n) {

    assertthat::assert_that(n >= 0)

    if (n > 0) {

        for (i in 1:n) {

            x <- f(x)
        }
    }

    x
}
Run Code Online (Sandbox Code Playgroud)

其工作原理如下:

iterate(256, f = sqrt, n = 3)
Run Code Online (Sandbox Code Playgroud)

这已经内置到R?

Col*_*vel 5

你可以用函数式编程的方式做到这一点,与ReduceComposefunctional包.我们的想法是创建您想要的功能列表并使用它们进行链接Compose.您只需将此功能应用于x之后.

x = 256
n = 3
f = sqrt

library(functional)

Reduce(Compose, replicate(n, f))(x)
#[1] 2
Run Code Online (Sandbox Code Playgroud)

或者使用freducemagrittr:

library(magrittr)

freduce(x, replicate(n, f))
#[1] 2
Run Code Online (Sandbox Code Playgroud)