跨列而不是行的累积总和

Cro*_*ops 4 r cumsum data.table

我有一个data.table dt如下。

df <- data.frame(t1 = rep(0,5), t3 = c(12, 5, 8,9, 5), t7= c(25, 48, 7, 9, 14))
dt <- setDT(df)
dt
   t1 t3 t7
1:  0 12 25
2:  0  5 48
3:  0  8  7
4:  0  9  9
5:  0  5 14
Run Code Online (Sandbox Code Playgroud)

我想获得各列的累计总和。我只是把它跨行。如何做到这一点data.table

dt[, 1:3 := cumsum(dt)]
dt
   t1 t3  t7
1:  0 12  25
2:  0 17  73
3:  0 25  80
4:  0 34  89
5:  0 39 103
Run Code Online (Sandbox Code Playgroud)

所需的输出如下:

dt
   t1 t3 t7
1:  0 12 37
2:  0  5 53
3:  0  8 15
4:  0  9 18
5:  0  5 19
Run Code Online (Sandbox Code Playgroud)

Psi*_*dom 6

另一种选择Reduceaccumulate=TRUE

dt[, names(dt) := Reduce(`+`, dt, accumulate = TRUE)]

dt
#   t1 t3 t7
#1:  0 12 37
#2:  0  5 53
#3:  0  8 15
#4:  0  9 18
#5:  0  5 19
Run Code Online (Sandbox Code Playgroud)