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

  • 本文关键字:对称 转换 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?

我认为@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

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

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

最新更新