我正在使用高阶函数将函数应用于向量中的每个元素,并将结果作为标量值返回。
假设我有:
v = c(0, 1, 2, 3, 4, 5, 6, 7, 8)
我想计算所有这些整数的总和,以左边5个整数为中心:
v中i的SUM(i-5):
Reduce(function(i) sum(i-5), v, 0)
我收到以下错误:
Error in f(init, x[[i]]) : unused argument(s) (x[[i]])
我的lambda函数出了什么问题?
谢谢!
最佳答案
这就是您想要的(如果使用Reduce
-对于这种特殊情况显然不是正确的选择,因此仅用于演示目的):
Reduce(function(x,y) {x+y-5}, v, 0)
这将从
v
的左侧开始,将添加下一个元素并减去5,并将继续这样做直到到达v
的末尾。您应该能够看到如何修改以放置两个元素的任意功能(累积的一个和下一个),而不是为问题选择的一个。
关于r - 减少R的左折,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16364549/