【发布时间】:2021-01-04 22:13:57
【问题描述】:
已编辑:假设我有一个对称矩阵,如下所示。
dat<-c(NA,2,3,4,5,2,NA,8,9,10,3,8,NA,14,15,4,9,14,NA,20,5,10,15,20,NA)
x<-matrix(dat,nrow = 5,dimnames = list(c("A","B","C","D","E"),c("A","B","C","D","E")))
x
我正在尝试查看是否有任何方法可以使用 R 对矩阵进行重新排序,使最大值更接近对角线,将下三角形每列的最大值作为第一个对角线中的项目,并且它保持其对称性。这是卡片分类的问题。
这是所需的输出:
result<-c(NA,20,15,10,5,20,NA,14,9,4,15,14,NA,8,3,10,9,8,NA,2,5,4,3,2,NA)
y<-matrix(result,nrow = 5,dimnames = list(c("E","D","C","B","A"),c("E","D","C","B","A")))
y
【问题讨论】:
-
不是(相对)大的 14x14 矩阵,您可以编辑您的问题以提供更小的示例吗?导入、理解您的问题和调试解决方案将更容易。也许给出一个 4x4 或 5x5 的示例,使用有效的 R 语法,并显示输入和所需的输出?
-
我认为一个可行的例子可以解决这个问题,但我想确保我理解。通过“重新排序”,您是否要重新排序下三角形中 within 列中的值?还是行内?还是两者之一?
-
我已将我的问题编辑为一个 5x5 示例,并且还包括了结果应该是什么样子。
-
是否需要通过交换完整的行来尝试?
-
是的,对列进行排序后,行也必须更改,以保持对称矩阵。