逐步总结列表成员

时间:2016-12-31 14:42:15

标签: r sum cumulative-sum

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

我们说我有一个随机的分布式数字列表,如:

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

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

[4,7,10,12,17]

2 个答案:

答案 0 :(得分:2)

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

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

我希望这会有所帮助。

答案 1 :(得分:1)

首先我来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))