在矩阵中求和列

时间:2014-10-07 11:25:22

标签: r matrix sum

我想添加第1列:矩阵的i来获得每个的累积总和。然后将结果放在另一个矩阵中

所以喜欢:

matrix
    [,1] [,2] [,3] [,4] [,5]
[1,]  A   B    C    D    E
[2,]  F   G    H    I    J
[3,]  K   L    M    N    O
[4,]  P   Q    R    S    T

成为:

newmatrix
    [,1]  [,2] [,3]     [,4]     [,5]
[1,]  A   A+B  A+B+C  A+B+C+D  A+B+C+D+E  
[2,]  F   F+G  F+G+H  F+G+H+I  F+G+H+I+J
[3,]  K   K+L  K+L+M  K+L+M+N  K+L+M+N+O
[4,]  P   P+Q  P+Q+R  P+Q+R+S  P+Q+R+S+T

2 个答案:

答案 0 :(得分:5)

> m<-matrix(rep(1:5,each=4),ncol=5)
> t(apply(m,1,cumsum))

答案 1 :(得分:0)

从理论上讲,你可以通过右上乘一个上三角矩阵(大小为m-by-m,其中原始矩阵是n-by-m)来实现这一目的。

| A B C D |   | 1 1 1 1 |   | A  A+B  A+B+C A+B+C+D |
| E F G H | * | 0 1 1 1 | = | E  E+F  E+F+G E+F+G+H |
| I J K L |   | 0 0 1 1 |   | I  I+J  I+J+K I+J+K+L |
              | 0 0 0 1 |

| A B C D E |   | 1 1 1 1 1 |   | A A+B A+B+C A+B+C+D A+B+C+D+E |
| F G H I J |   | 0 1 1 1 1 |   | F F+G F+G+H F+G+H+I F+G+H+I+J |
| K L M N O | * | 0 0 1 1 1 | = | K K+L K+L+M K+L+M+N K+L+M+N+O |
| P Q R S T |   | 0 0 0 1 1 |   | P P+Q P+Q+R P+Q+R+S P+Q+R+S+T |
                | 0 0 0 0 1 |