如果我们有一个向量并希望累积其数字,我们会使用cumsum
:
vec = c(0,3,3,1,1,3)
vec.sum = cumsum(vec)
vec.sum
[1] 0 3 6 7 8 11
当我们想要相反的时候呢? for循环可以解决这个问题,但有没有更有效的方法来实现这一点,特别是对于大型向量?
for (i in length(vec.sum):2) {
vec.sum[i] = vec.sum[i] - vec.sum[i-1]
}
vec.sum
[1] 0 3 3 1 1 3
答案 0 :(得分:3)
c(vec.sum[1], diff(vec.sum))
#[1] 0 3 3 1 1 3
或者
c(vec.sum[1],vec.sum[-1]-vec.sum[-length(vec.sum)])
#[1] 0 3 3 1 1 3