在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!
但这当然是错的。是否有内置的循环函数可以为我做这个?
答案 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