У меня есть матрица с несколькими миллионами строк и около 40 столбцов.Производительность в R: Каков самый быстрый способ сортировки элементов строки в матрице?
Я хочу сортировать элементы в каждой строке так, чтобы их значение уменьшалось. Таким образом, элемент с самым высоким значением каждой строки должен быть в первом столбце.
Для этого я могу использовать функцию apply
. Например:
set.seed(1)
mm <- replicate(10, rnorm(20)) #random matrix with 20 rows and 10 columns
mm.sorted <- apply(mm,1,sort,decreasing=T)
Но когда я делаю это для очень большой матрицы, этот подход занимает очень много времени.
Интересно, существуют ли разные подходы к ускорению сортировки элементов в строках.
Вы можете посмотреть руководство для распараллеливания здесь: https://cran.r-project.org/web/views/HighPerformanceComputing.html Я предполагаю, что это будет выглядеть как 'lapply (split (mm, row (mm))), sort) 'но заменяя' lapply' некоторым вариантом, например mclapply – Frank
FYI - 'replicate (10, rnorm (20))]' - это матрица с 20 строками и 10 колонами. – rbm
@rbm: Спасибо! Починил это. –