如何使用顺序函数查找矩阵中的行顺序

时间:2016-01-11 12:44:14

标签: r

d< -matrix(1:25,5,5)(这只是一个例子,数字基本上是随机的)

     [,1] [,2] [,3] [,4] [,5]
[1,]    1    6   11   16   21
[2,]    2    7   12   17   22
[3,]    3    8   13   18   23
[4,]    4    9   14   19   24
[5,]    5   10   15   20   25

我想对每一行应用订单,并得到类似的内容:

0 1 2 3 4 
0 1 2 3 4 
... 

我试过了:

l<-apply(d,1, function(x) order(x))

但我得到了这个结果:

     [,1] [,2] [,3] [,4] [,5]
[1,]    1    1    1    1    1
[2,]    2    2    2    2    2
[3,]    3    3    3    3    3
[4,]    4    4    4    4    4
[5,]    5    5    5    5    5

示例2:

> d<-matrix(sample(1:25),5,5)
> d
     [,1] [,2] [,3] [,4] [,5]
[1,]    1   20   13    4   11
[2,]   22   17   24    3   16
[3,]   18   23    2   15   14
[4,]    5   25    7   10   21
[5,]   12    8    6   19    9

抱歉,我在考虑排名。结果应该是这样的:

1 5 4 2 3(第1行)依此类推:

请帮助,谢谢!!

1 个答案:

答案 0 :(得分:1)

我们可以使用rank

 res <- t(apply(d, 1, rank))
 res
 #     [,1] [,2] [,3] [,4] [,5]
 #[1,]    1    5    4    2    3
 #[2,]    4    3    5    1    2
 #[3,]    4    5    1    3    2
 #[4,]    1    5    2    3    4
 #[5,]    4    2    1    5    3