逐步总结列表成员

Summing up list members step by step

我有一个非常简单的问题,但我无法在 R 中找到简单的解决方案,因为我习惯于在其他语言中通过迭代递增的 for 循环来解决此类问题。

假设我有一个随机分布的数字列表,例如:

rand.list <- list(4,3,3,2,5)

我想将此随机分布模式更改为不断上升的模式,因此结果如下所示:

[4,7,10,12,17]

尝试使用 Reduce 并将 accumulate 参数设置为 TRUE:

Reduce("+",rand.list, accumulate = T)

希望对您有所帮助。

我首先想到做 cumsum(unlist(rand.list)),其中 unlist 将列表折叠成一个普通向量。然而,我的幸运尝试表明 cumsum(rand.list) 也有效。

我不太清楚这是如何工作的,因为 cumsum 的源代码调用了 .Primitive,这是一个不容易进一步调查的内部 S3 方法调度程序。但我做了另一个补充实验如下:

x <- list(1:2,3:4,5:6)
cumsum(x)  ## does not work

x <- list(c(1,2), c(3,4), c(5,6))
cumsum(x)  ## does not work

在这种情况下,我们必须做cumsum(unlist(x))