Минимум из списка на R
Есть два списка именно:
a <- list(0, 1, 1, 0, 1)
b <- list(5.35, -14, 21, -70, 5)
Как мне в одну строку получить индекс самого маленького элемента из b, только среди тех индексов у которых в a на этих же позициях стоят единицы. Например в данном случае минимальный элемент в b будет -14
Ответы (1 шт):
Автор решения: aleksandr barakin
→ Ссылка
например, так (пробелы вставлены лишь для лучшего восприятия, их в данном случае можно убрать все до одного):
min( unlist( b )[ unlist( a ) == 1 ] )
где:
unlist(список)— преобразование списка в вектор (векторами гораздо проще манипулировать)вектор == значение— результатом будет замена элементов вектора, равных указанному значению, наT(true, истина), остальных — наF(false, ложь)вектор[вектор_индексов]— фильтрация вектора: если энный элемент в вектор_индексов — ложь, то энный элемент вектора пропускаетсяmin(вектор)— получение минимального значения вектора.
ах, да, требуется не значение, а индекс. для этого вместо функции min() можно воспользоваться функцией which.min().