我正在使用高阶函数将函数应用于向量中的每个元素,并将结果作为标量值返回。

假设我有:

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/

10-11 11:50