将前一行的值添加到后续行,在 R 中累积

adding value from previous row to subsequent ones, cumulatively in R

我正在尝试将上一行的最后一个值添加到后续行。例如

tmat = rbind(c(1,2,3), c(1,2,3), c(1,2,5))
tmat = as.data.frame(tmat)
tmat

  V1 V2 V3
1  1  2  3
2  1  2  3
3  1  2  5

改为

  V1 V2 V3
1  1  2  3
2  4  5  6
3  7  8  11

我尝试了很多方法,但我对这个有盲点。

new=list()
for(i in 2:nrow(tmat)){
    
new[[i]] =  cumsum(tmat[i,]+tmat[i-1,3])
        }
do.call(rbind, new)

感谢您的帮助。

我会使用循环,因为您需要逐步计算行...

a <- 1:3
aa <- rbind(a,a,a)
aa[3,3] <- 6

for(i in 1:(nrow(aa)-1)) {
  toadd <- aa[i,ncol(aa)]
  aa[i+1,] <- aa[i+1,] + aa[i, ncol(aa)]
}
aa
  [,1] [,2] [,3]
a    1    2    3
a    4    5    6
a    7    8   12

作为矩阵缩减:

do.call(rbind, Reduce(function(a0, a1) (a1 + a0[3]), 
                      split(as.matrix(tmat), seq_along(tmat)), 
                      accumulate = T))
     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6
[3,]    7    8   11