使用R的矩阵上的sumcum

时间:2015-03-03 15:54:43

标签: r

我想用cumsum多个矩阵来获取步骤。如果我们考虑:

A <- structure(c(1, 2, 3, 2, 3, 1, 4, 1, 2), .Dim = c(3, 3))
#      [,1] [,2] [,3]
# [1,]    1    2    4
# [2,]    2    3    1
# [3,]    3    1    2
B <- structure(c(6, 1, 9, 6, 3, 7, 3, 2, 8), .Dim = c(3, 3))
#      [,1] [,2] [,3]
# [1,]    6    6    3
# [2,]    1    3    2
# [3,]    9    7    8
C <- structure(c(1, 1, 2, 5, 3, 3, 3, 9, 1), .Dim = c(3, 3))
#      [,1] [,2] [,3]
# [1,]    1    5    3
# [2,]    1    3    9
# [3,]    2    3    1

我想要以下结果:

     [,1] [,2] [,3]
[1,]    1    2    4
[2,]    2    3    1
[3,]    3    1    2

     [,1] [,2] [,3]
[1,]    7    8    7
[2,]    3    6    3
[3,]   12    8   10

     [,1] [,2] [,3]
[1,]    8   13   10
[2,]    4    9   12
[3,]   14   11   11

完成所有步骤!我可以用for循环来做这个,但是对于大矩阵来说它很慢,我怎么能用apply来做呢?

1 个答案:

答案 0 :(得分:11)

这是Reduce的完美工作:

Reduce("+", list(A,B,C), accumulate=TRUE)
[[1]]
     [,1] [,2] [,3]
[1,]    1    2    4
[2,]    2    3    1
[3,]    3    1    2

[[2]]
     [,1] [,2] [,3]
[1,]    7    8    7
[2,]    3    6    3
[3,]   12    8   10

[[3]]
     [,1] [,2] [,3]
[1,]    8   13   10
[2,]    4    9   12
[3,]   14   11   11