假设我有一个包含以下值的向量:
foo <- c(1:5)
[1] 1 2 3 4 5
是否有一种函数或其他快速方法可以使foo
的每个值递归地添加到它之前的数字中?
Desired Result是一个包含这些附加值的向量:
1 3 6 10 15
foo[1]
为1
,foo[1] + foo[2]
为1 + 2
= 3
,foo[1] + foo[2] + foo[3]
为1 + 2 + 3
= 6
等等。我的尝试:
我想出了:
vapply(1:length(foo), function(x) sum(foo[1]:foo[x]),integer(1))
但我希望有一种更简单的方法可以做到这一点......
答案 0 :(得分:1)
是的,cumsum
正是如此:
cumsum(foo)
# [1] 1 3 6 10 15
对于累积产品,另一个方便且密切相关的功能是cumprod(x)
。请参阅?cumsum
。