矩阵索引按其包含的值排序

时间:2017-11-23 10:03:40

标签: r matrix cell

我有一个像这样的矩阵:

 mat<-matrix(c(10,45,2,15,3,98,1,7,13),nrow = 3)

mat
     [,1] [,2] [,3]
[1,]   10   15    1
[2,]   45    3    7
[3,]    2   98   13

我希望得到有序值的索引,就像我们可以从order(x, arr.idx = T)获得但应用于矩阵的那样。那就是:

   [,1]  [,2]
     1    3
     3    1
     2    2
     2    3
     1    1
     3    3
     1    2
     2    1
     3    2

有没有快速的方法呢?

提前谢谢

2 个答案:

答案 0 :(得分:5)

您可以使用

arrayInd(order(mat), dim(mat), dimnames(mat))
#      [,1] [,2]
# [1,]    1    3
# [2,]    3    1
# [3,]    2    2
# [4,]    2    3
# [5,]    1    1
# [6,]    3    3
# [7,]    1    2
# [8,]    2    1
# [9,]    3    2

答案 1 :(得分:3)

使用order作为索引,我们重新排列'mat'和row的{​​{1}}和col以获取有序值的行/列索引< / p>

cbind