假设我有一个变量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?
答案 0 :(得分:5)
您可以使用函数式编程方法,Reduce
和Compose
来自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