首页 > 解决方案 > 如何使用 R 制作对称矩阵?

问题描述

我正在尝试使用 R 制作对称矩阵。我已经有一个矩阵。我的矩阵很大,所以下面是一个简单的例子。

前任。

1 2 3

4 5 6

7 8 9

我需要让他们像这样。

1 2+4 3+7

4+2 5 6+8

7+3 8+6 9

//所以我尝试了这个。// mat 是我正在使用的矩阵。

lowervector <- square_07[lower.tri(square_07, diag = FALSE)]

uppervector <- square_07[upper.tri(square_07, diag = FALSE)]

lowermat <- square_07 uppermat <- square_07

lowermat[lower.tri(lowermat, diag = FALSE)] <- t(square_07)[lower.tri(square_07, diag = FALSE)]

uppermat[upper.tri(uppermat, diag = FALSE)] <- t(square_07)[upper.tri(square_07, diag = FALSE)]

当我执行最后两行时,出现错误;

下标 'upper.tri(uppermat, diag = FALSE)' 是一个矩阵,数据 't[upper.tri(square_07, diag = FALSE)]' 的大小必须为 1。

你应该知道。上面的矩阵只是一个例子。我的实际矩阵要大得多。它是一个 248*248 矩阵。

我怎么解决这个问题?

标签: rmatrixsymmetric

解决方案


这更简单:

result <- square_07 + t(square_07)
diag(result) <- diag(square_07)
result
#      [,1] [,2] [,3]
# [1,]    1    6   10
# [2,]    6    5   14
# [3,]   10   14    9

推荐阅读