Найти упорядоченную позицию в матрице - PullRequest
0 голосов
/ 26 июня 2018

Для справки: Цвет заказа на основе оттенка, насыщенности, значения в 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 голосов
/ 26 июня 2018

Один из вариантов будет 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")))
0 голосов
/ 26 июня 2018

Комбинация match() и sort() получит то, что вы хотите:

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

match(sort(mat[,1]), mat[,1])
3 2 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...