Получить 3 верхних значения в строке и сохранить индекс столбца

Рассмотрим следующую матрицу:

 m <- structure(c(0.00165720273925865, 0.000414300684814661, 0.00126727268296249, 
0.0105768527770331, 0.00126727268296249, 0.00155972022518461, 
0.00046304194185168, 0.001291643311481, 0.0107961884336997, 0.00158409085370312, 
0.00114541954036995, 0.000438671313333171, 0.00141349645407355, 
0.0107230765481442, 0.00182779713888821, 0.00131601393999951, 
0.00046304194185168, 0.00124290205444398, 0.00984573392147784, 
0.00175468525333268, 0.00158409085370312, 0.000536153827407209, 
0.00173031462481417, 0.0100894402066629, 0.00119416079740697), .Dim = c(5L, 
5L), .Dimnames = list(c("M001_0.6", "M002_0.6", "M004_0.6", "M012_0.6", 
"M013_0.6"), NULL))

Это выглядит так:

                 [,1]         [,2]         [,3]         [,4]         [,5]
M001_0.6 0.0016572027 0.0015597202 0.0011454195 0.0013160139 0.0015840909
M002_0.6 0.0004143007 0.0004630419 0.0004386713 0.0004630419 0.0005361538
M004_0.6 0.0012672727 0.0012916433 0.0014134965 0.0012429021 0.0017303146
M012_0.6 0.0105768528 0.0107961884 0.0107230765 0.0098457339 0.0100894402
M013_0.6 0.0012672727 0.0015840909 0.0018277971 0.0017546853 0.0011941608

Я хотел бы найти 3 верхних максимальных значения в строке и сохранить индекс столбца, где эти максимальные 3 значения встречаются для каждой строки. С помощью этого кода можно получить первые 3, но индексы столбцов отбрасываются.

apply(m, 1,function(x) sort(x,decreasing = TRUE))
Получение данных из формы с помощью JavaScript - краткое руководство
Получение данных из формы с помощью JavaScript - краткое руководство
Получить данные из формы с помощью JS очень просто: вы запрашиваете элемент формы, передаете его конструктору new FormData() и, наконец, получаете...
Пользовательские правила валидации в Laravel
Пользовательские правила валидации в Laravel
Если вы хотите создать свое собственное правило валидации, Laravel предоставляет возможность сделать это. Создайте правило с помощью следующей...
3 метода стилизации элементов HTML
3 метода стилизации элементов HTML
Когда дело доходит до применения какого-либо стиля к нашему HTML, существует три подхода: встроенный, внутренний и внешний. Предпочтительным обычно...
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
0
0
22
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете использовать order, чтобы получить индексы, и head(x, 3), чтобы получить первые 3 значения.

head(apply(m, 1, function(x) order(x, decreasing = TRUE)), 3)
     M001_0.6 M002_0.6 M004_0.6 M012_0.6 M013_0.6
[1,]        1        5        5        2        3
[2,]        5        2        3        3        4
[3,]        2        4        2        1        2

Тогда вы можете получить что-то вроде:

list(index = t(head(apply(m, 1, function(x) order(x, decreasing = TRUE)), 3)),
     values = t(head(apply(m, 1,function(x) sort(x, decreasing = TRUE)), 3)))

$index
         [,1] [,2] [,3]
M001_0.6    1    5    2
M002_0.6    5    2    4
M004_0.6    5    3    2
M012_0.6    2    3    1
M013_0.6    3    4    2

$values
                 [,1]         [,2]         [,3]
M001_0.6 0.0016572027 0.0015840909 0.0015597202
M002_0.6 0.0005361538 0.0004630419 0.0004630419
M004_0.6 0.0017303146 0.0014134965 0.0012916433
M012_0.6 0.0107961884 0.0107230765 0.0105768528
M013_0.6 0.0018277971 0.0017546853 0.0015840909

Другие вопросы по теме