Сортировка строк и столбцов в матрице по числовым dimnames - PullRequest
0 голосов
/ 05 февраля 2020

У меня есть разреженная матрица, имена строк и столбцов которой являются числами. Мне нужно отсортировать строки и столбцы, чтобы они увеличивались. Однако dimnames могут храниться только как символы, а не как целые числа или числа, так что сортировка dimnames не дает возрастающей сортировки, а скорее обрабатывает числа как слова и сортирует их по алфавиту (например, 10000001 предшествует 1001).

Каждый раз, когда я пытаюсь изменить тип dimnames, я получаю эту ошибку:

Error in dimnamesGets(x, value) : 
  invalid dimnames given for “dgCMatrix” object

Есть ли способ обойти это? Существуют ли разные типы матриц, допускающие числовые имена?

1 Ответ

1 голос
/ 05 февраля 2020

Вы можете выполнить преобразование чисел c вне матрицы , чтобы получить правильный порядок, а затем использовать этот порядок в именах классов символов для сортировки. Например:

my_colnames = c("1", "11",  "2", "10", "12")
my_col_order = order(as.numeric(my_colnames))
my_colnames[my_col_order]
[1] "1"  "2"  "10" "11" "12"
# sorted correctly even though still character class
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...