【发布时间】:2017-10-18 02:10:43
【问题描述】:
我有一个相关矩阵data.corr,其中包含 163 家公司,因此矩阵维度为 163 行和 163 列。
我想对每个公司的相关值最高的5个进行排序,所以我写了以下代码:
COR<- matrix(nrow = 5, ncol = 163)
for(i in 1:163){COR[,i]<-tail(sort(data.corr[i,]),5)}
它工作得很好,但它没有从每个值的原始相关矩阵中复制行和列名称的问题。
行名和列名是公司名。 这是相关矩阵的示例:
head(data.corr)
X601288.SS X601988.SS X601998.SS X601818.SS X601939.SS X601398.SS
X601288.SS 1.0000000 0.7628263 0.6130694 0.7947062 0.7578003 0.7568238
X601988.SS 0.7628263 1.0000000 0.7280957 0.6925497 0.8402101 0.8409767
X601998.SS 0.6130694 0.7280957 1.0000000 0.6715793 0.7118446 0.6716997
X601818.SS 0.7947062 0.6925497 0.6715793 1.0000000 0.6825405 0.6471228
X601939.SS 0.7578003 0.8402101 0.7118446 0.6825405 1.0000000 0.8390544
X601398.SS 0.7568238 0.8409767 0.6716997 0.6471228 0.8390544 1.0000000
这里是最高五个相关性的样本:
head(COR)
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
[1,] 0.7568238 0.7280957 0.6894561 0.6715793 0.7558052 0.7323083 0.7323083 0.6894561
[2,] 0.7578003 0.7628263 0.7118446 0.6825405 0.7578003 0.7568238 0.7472125 0.6956420
[3,] 0.7628263 0.8402101 0.7223088 0.6925497 0.8390544 0.8390544 0.7558052 0.7007705
[4,] 0.7947062 0.8409767 0.7280957 0.7947062 0.8402101 0.8409767 0.7618053 0.7618053
[5,] 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000
任何想法如何使用匹配的列和行名称对值进行排序?
【问题讨论】:
-
行/列名是公司名吗?如果是这样,您的
COR矩阵中的 5 列的名称是否需要每行不同?如果行/列名称只是索引,你可以在之后重新编号吗?发布一些示例数据并更好地解释您正在尝试做的事情会有所帮助。 -
是的,行/列名称是公司名称。是的,
COR中的名称应该与data.corr中的值的名称匹配。我已经编辑了问题并发布了示例。 -
您的示例中的行/列名称是什么?我假设行名称只是 1...5 而列名称是公司名称?还是行名也需要是公司名?
-
如果公司名称在同一顺序,你可以
colnames(COR) <- colnames(data.corr)。 -
它们的顺序不同,这是我写问题时必须注意的。
标签: arrays r sorting matrix indexing