【发布时间】:2016-07-29 17:17:02
【问题描述】:
我知道有类似的问题,但我找不到我的问题的答案。我正在尝试对矩阵中的元素进行排名,然后提取 5 个最高元素的数据。
这是我的尝试。
set.seed(20)
d<-matrix(rnorm(100),nrow=10,ncol=10)
start<-d[1,1]
for (i in 1:10) {
for (j in 1:10) {
if (start < d[i,j])
{high<-d[i,j]
rowind<-i
colind<-j
}
}
}
虽然这给了我最高元素的数据,包括行号和列号,但我想不出办法对排名从 2 到 5 的元素做同样的事情。我也尝试过
rank(d, ties.method="max")
但这并没有帮助,因为它只是以矢量格式吐出排名。 我最终想要的是一个包含 秩、列名、行名以及矩阵中最高 5 个元素的数据(个数)。
编辑
set.seed(20)
d<-matrix(rnorm(100),nrow=10,ncol=10)
d[1,2]<-5
d[2,1]<-5
d[1,3]<-4
d[3,1]<-4
感谢您的回答。这些非常适合我的目的,但是当我为相关图表运行此代码时 - 每对都会有重复的数字 - 我只想计算两个数字中的一个以进行排名。有没有办法做到这一点?谢谢。
【问题讨论】:
-
是按行还是按列?
-
请在随机示例之前使用 set.seed。让人们更容易验证和比较答案。
-
@Frank 感谢您的建议。刚刚做出改变。
-
@akrun 我会按列说,但我认为这对我的数据无关紧要,因为我正在处理的原始数据是一个相关表。谢谢。
-
令人困惑的是,您的问题似乎是针对整个矩阵的。
I'm trying to rank elements in a matrix and then extract data of 5 highest elements.