在矩阵中查找有序的位置

时间:2018-06-26 17:26:51

标签: r sorting matrix

供参考,Order color based on Hue, Saturation, Value in R

我知道sort将返回排序的数据帧,而order将返回元素的位置(如果已订购)。

什么是相似的矩阵函数

我可以对矩阵进行排序,但是我想知道元素是否经过排序

> tHSVcol
             h         s         v
[1,] 0.6229508 0.6421053 0.3725490
[2,] 0.2767296 0.5145631 0.8078431
[3,] 0.1323283 0.7928287 0.9843137
[4,] 0.9790476 0.9510870 0.7215686
[5,] 0.9093567 0.5480769 0.4078431

> tHSVcol[order(tHSVcol[,1])]
[1] 0.1323283 0.2767296 0.6229508 0.9093567 0.9790476

我正在寻找的功能应该返回。请指教

> ???
[1] 3 2 1 5 4 

2 个答案:

答案 0 :(得分:3)

一个选项是rank

rank(tHSVcol[,1])
#[1] 3 2 1 5 4

数据

tHSVcol <- structure(c(0.6229508, 0.2767296, 0.1323283, 0.9790476, 0.9093567, 
0.6421053, 0.5145631, 0.7928287, 0.951087, 0.5480769, 0.372549, 
0.8078431, 0.9843137, 0.7215686, 0.4078431), .Dim = c(5L, 3L), .Dimnames = list(
   NULL, c("h", "s", "v")))

答案 1 :(得分:2)

match()sort()的组合将得到您想要的:

mat <- matrix(9:1, 3,3, byrow = TRUE)

match(sort(mat[,1]), mat[,1])
3 2 1