【问题标题】:Sum columns in a matrix对矩阵中的列求和
【发布时间】:2014-10-07 11:25:22
【问题描述】:

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

【问题讨论】:

    标签: r matrix sum


    【解决方案1】:
    > m<-matrix(rep(1:5,each=4),ncol=5)
    > t(apply(m,1,cumsum))
    

    【讨论】:

    • 非常感谢 :) 我总是忘记这个功能!
    【解决方案2】:

    理论上,您可以通过右乘以一的上三角矩阵(大小为 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 |
    

    【讨论】:

    • 这适用于对称矩阵,而问题使用非对称矩阵的示例 - 您能否调整您的问题以引用这种情况?
    • 我已将其更改为非方阵
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-15
    • 1970-01-01
    • 2017-11-16
    • 2014-10-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多