Как я могу применить применить с массивом и скаляр?

r

51 просмотра

1 ответ

Если у меня есть массив

a = c(1,2,3,1,2,3,1,2,3,1,2,3)

Я хотел бы применить функцию «который» для каждого скаляра в 1: 3

l = list()
for(i in 1:3){
 l[[i]] = which(a == i)
}

как мне векторизовать эту операцию с помощью apply, lapply, Map?

Автор: Sojers Источник Размещён: 08.11.2019 11:11

Ответы (1)


2 плюса

Решение

Основным аргументом lapplyдолжно быть измерение элементов списка, которое вы хотите получить. Что именно вы зацикливаете в своем forпримере, так:

a = c(1,2,3,1,2,3,1,2,3,1,2,3)
lapply(1:3, function(x) which(a == x))

В качестве альтернативы, если вы не хотите кодировать aанонимную функцию, вы можете использовать:

lapply(1:3, function(x, y) which(y == x), y = a)
Автор: Axeman Размещён: 20.08.2016 10:53
Вопросы из категории :
32x32