我遇到了一个非常简单的问题,但是我无法在R中找到一个简单的解决方案,因为我习惯于通过在其他语言中循环递增for循环来解决这些问题。
我们说我有一个随机的分布式数字列表,如:
rand.list <- list(4,3,3,2,5)
我想将这种随机分布式模式更改为不断上升的模式,因此结果如下:
[4,7,10,12,17]
答案 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))
。