繁体   English   中英

在 R 中重新排序对称矩阵

[英]Reorder symmetric matrix in R

编辑:假设我有一个对称矩阵,如下所示。

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 以使最大值更接近对角线的方式重新排序矩阵,将下三角形每列的最大值作为第一项对角线,并且它也保持其对称性。 这是卡片分类的问题。

这是所需的 output:

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

在检查包含文档之间相似性的矩阵时,我有类似的要求。

k <- apply(x, 1, max, na.rm=TRUE)
order <- sort(k, decreasing=TRUE, index.return=TRUE)$ix
x[order, order]

我在每一行上使用max来找到每行的最大值。 na.rm确保不考虑对角线。 然后sort提供所需的顺序作为向量。 根据该顺序重新组织矩阵就像x[order, order]一样简单。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM