【问题标题】:Recursively add consecutive vector values in R [duplicate]在R中递归地添加连续的向量值[重复]
【发布时间】:2018-03-15 20:21:24
【问题描述】:

假设我有一个包含以下值的向量:

foo <- c(1:5)
[1] 1 2 3 4 5 

是否有一种函数或其他快速方法可以让foo 的每个值递归地添加到它之前的数字?

Desired Result 是一个包含这些附加值的向量:

1 3 6 10 15
  • foo[1]1foo[1] + foo[2]1 + 2 = 3foo[1] + foo[2] + foo[3]1 + 2 + 3 = 6,等等

我的尝试:

我想出了:

vapply(1:length(foo), function(x) sum(foo[1]:foo[x]),integer(1))

但我希望有一种更简单的方法可以做到这一点......

【问题讨论】:

  • 查看cumsum

标签: r recursion vector add


【解决方案1】:

是的,cumsum 正是这样做的:

cumsum(foo)
# [1]  1  3  6 10 15

另一个方便且密切相关的功能是cumprod(x),用于累积产品。见?cumsum

【讨论】:

  • 正是我需要的。谢谢!出于好奇,cumsum 是如何工作的?我看了here,但链接的描述不包括底层的功能代码(即,该函数实际在做什么
  • @theforestecologist,那是因为 *.Rd 只是文档文件。见svn.r-project.org/R/trunk/src/main/cum.c中的第一个函数
  • 反对票是为了……?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-10-31
  • 2016-10-04
  • 2015-02-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多