将矩阵转换为R中的对称矩阵

时间:2020-07-02 00:35:44

标签: r

我目前有一个程序输出的矩阵,如下所示,其中左下角全为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?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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

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