【问题标题】:how to find order of rows in a matrix using order function如何使用 order 函数在矩阵中查找行的顺序
【发布时间】:2016-01-11 12:44:13
【问题描述】:

d

     [,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 行)等等:

请帮忙,谢谢!!

【问题讨论】:

  • 你需要t lt(l)
  • 如果你尝试 d 就不行了
  • 其中的预期输出是什么。此外,请使用 set.seed 以使其可重现。
  • 您可以使用rank 指定ties.method
  • 试试res &lt;- t(apply(d, 1, rank)); res[1,] #[1] 1 5 4 2 3

标签: r


【解决方案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

【讨论】:

    猜你喜欢
    • 2016-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-20
    • 1970-01-01
    • 2016-09-04
    相关资源
    最近更新 更多