У меня есть матрица типа numeric с dim 10000 * 50. Теперь я хочу найти индекс из 5 верхних элементов в каждой строке порядка их значения. например образец может выглядеть следующим образом:найти индекс верхних n элементов в векторе по порядку [R]
set.seed(2)
v1 <- matrix(runif(20 , 0 ,20) , 2 ,10)
v1
# [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
#[1,] 3.697645 11.466527 18.87679 2.58318 9.36037 11.053481 15.210266 8.105644 19.527970 8.896185
#[2,] 14.047481 3.361038 18.86950 16.66898 10.99967 4.777895 3.616402 17.070969 4.516509 1.499588
Тогда я хочу, выход выглядеть следующим образом:
#[1,] 9 3 7 2 6
#[2,] 3 8 4 1 5
я смог найти только this question, который объясняет, как найти топ п элементов, но не в порядке значения.
Обе работы, но они медленнее, чем ответ Ричарда Скривена. базовый R-решение занимает около 20% больше времени, в то время как data.table занимает 80% больше времени. Спасибо за предложение. –
@ViragSwami Спасибо за внимание. Я думал, что 'data.table' будет быстрым. Вероятно, «расплав» (из reshape2) увеличил время. – akrun