2014-10-07 145 views
3

我想添加矩阵的列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 

回答

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

感谢你非常:)我总是忘了这个功能! – 2014-10-07 12:48:56

0

理论上你可以通过右键乘法实现这一目标通过的上三角矩阵(大小为m×m,其中原始矩阵为n×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 | 
+0

请格式化您的代码。 – Jan 2015-09-22 12:26:41

+0

这适用于对称矩阵,而问题使用非对称矩阵的例子 - 你能适应你的问题来引用这种情况吗? – Tim 2015-09-22 12:38:02

+0

我已将其更改为非方形矩阵 – Steve 2015-09-22 12:48:56