【问题标题】:Convert matrix into symmetrical matrix in R [duplicate]将矩阵转换为R中的对称矩阵[重复]
【发布时间】:2020-07-02 00:35:44
【问题描述】:

我目前有一个程序的矩阵输出,如下所示,其中左下角全为 1:

  B C D E
A 0 1 2 3
B 1 1 3 3
C 1 1 1 3
D 1 1 1 0

有没有办法将其转换为对称矩阵而不是全部为 1?

【问题讨论】:

    标签: r


    【解决方案1】:

    我不认为@RonakShah 的解决方案是正确的。

    M = matrix(1:16, nrow=4)
    M
         [,1] [,2] [,3] [,4]
    [1,]    1    5    9   13
    [2,]    2    6   10   14
    [3,]    3    7   11   15
    [4,]    4    8   12   16
    
    M[lower.tri(M)] <- M[upper.tri(M)]
    M
         [,1] [,2] [,3] [,4]
    [1,]    1    5    9   13
    [2,]    5    6   10   14
    [3,]    9   13   11   15
    [4,]   10   14   15   16
    

    这不是对称的。相反,使用

    M = matrix(1:16, nrow=4)
    M[lower.tri(M)] <- t(M)[lower.tri(M)]
    M
         [,1] [,2] [,3] [,4]
    [1,]    1    5    9   13
    [2,]    5    6   10   14
    [3,]    9   10   11   15
    [4,]   13   14   15   16
    

    【讨论】:

      【解决方案2】:

      您可以将上三角的值复制到下三角。

      mat[lower.tri(mat)] <- mat[upper.tri(mat)]
      mat
      
      #  B C D E
      #A 0 1 2 3
      #B 1 1 3 3
      #C 2 3 1 3
      #D 3 3 3 0
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-10-03
        • 1970-01-01
        • 1970-01-01
        • 2017-06-17
        • 2015-08-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多