【发布时间】:2021-07-29 04:17:25
【问题描述】:
我正在尝试使用 R 创建一个对称矩阵。 我已经有一个矩阵。我的矩阵很大,下面是一个简单的例子。
EX.
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 的矩阵。
我该如何解决这个问题?
【问题讨论】:
-
我需要将矩阵中心线两侧的值相加...!中心线的值是 1、5、9。所以 2 和 4 应该加在一起。并且 3 和 7、6 和 8 也应该加在一起。