【问题标题】:Find Ordered Position in Matrix在矩阵中查找有序位置
【发布时间】:2018-06-26 17:26:50
【问题描述】:

供参考,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 

【问题讨论】:

    标签: r sorting matrix


    【解决方案1】:

    一个选项是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")))
    

    【讨论】:

      【解决方案2】:

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

      mat <- matrix(9:1, 3,3, byrow = TRUE)
      
      match(sort(mat[,1]), mat[,1])
      3 2 1
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-01-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多