在 R 中递归添加连续的向量值
Recursively add consecutive vector values in R
假设我有一个包含以下值的向量:
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))
但我希望有更简单的方法来做到这一点...
是的,cumsum
正是这样做的:
cumsum(foo)
# [1] 1 3 6 10 15
另一个方便且密切相关的函数是 cumprod(x)
累积产品。参见 ?cumsum
。
假设我有一个包含以下值的向量:
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))
但我希望有更简单的方法来做到这一点...
是的,cumsum
正是这样做的:
cumsum(foo)
# [1] 1 3 6 10 15
另一个方便且密切相关的函数是 cumprod(x)
累积产品。参见 ?cumsum
。