如何在R中有效地实现函数迭代

时间:2015-07-17 01:39:23

标签: r

在R中,实施

的最有效方法是什么
y[1] = x[1]
for (i in 2:length(x)) {
    y[i] = f (y[i-1], x[i])
}

其中x是我的输入,f是给定的函数? 理想情况下,我希望能够说出

y[1] = x[1]
y[2:N] = sapply (2:N, function (i) {f(y[i-1], x[i])}) # WRONG of course!

但这当然是错的。是否有内置的循环函数可以为我做这个?

1 个答案:

答案 0 :(得分:4)

Reduce将减少执行此类操作所需的击键次数:

Reduce(f, x, accumulate=TRUE)

例如,让我们考虑一个简单的例子,你只是添加元素(当然cumsum(x)在这种情况下效率更高):

x <- c(1, 2, 4, 5)
Reduce("+", x, accumulate=TRUE)
# [1]  1  3  7 12