У меня есть большая разреженная матрица и вы хотите ранжировать ее столбцы с ненулевыми элементами по столбцу. Подход, который я использую сейчас, состоит в том, чтобы преобразовать все нули в NA
. Проблема с этим подходом заключается в том, что матрица не является более редкой и имеет пространственные сложности при этом.Ранг не нули элементов столбца по столбцу в разреженной матрице
Есть ли способ использовать функцию rank
без преобразования нулей в NA
? Воспроизводимый пример:
library(Matrix)
TestMatrix = Matrix(c(0,100,12,0,11,
0,100,12,0,11,
0,100,12,0,11,
0,100,12,0,11,
0,100,12,0,11), 5, sparse = TRUE)
TestMatrix = replace(TestMatrix, TestMatrix == 0, NA)
apply(-TestMatrix, 2, function(x) {rank(x, na.last = TRUE)})
Я хочу разреженную матрицу того же размера, с ненулевыми значениями заменены столбцами рангом.
ли ненулевое Vales в вашей матрице действительно все положительным, как в вашем примере? – Gregor
Да. Все значения положительны. –
Я должен был обновить это в вопросе. Да, мой ожидаемый результат - это разреженная матрица того же размера, но с ненулевыми значениями, замененными рангом –