как получить массив из фрейма данных

#r #arrays #dataframe

Вопрос:

Как я могу получить массив в виде столбца во фрейме данных, удовлетворяющий условию?

пример:

 x=data.frame(pn=c('a','b','c','d','e','f'),price=c(1,2,3,4,5,6))
 

Затем для заданного списка pn (массива, который может иметь любой размер), например:

 y=c('a','b','f','a','a','b','b','a','f','f')
 

Мне нужен массив цен относительно y. Ожидаемый результат составляет:

 1,2,6,1,1,2,2,1,6,6
 

(Без цикла или лямбда-функции)

Ответ №1:

Используйте именованный вектор для сопоставления

 unname(setNames(x$price, x$pn)[y])
#[1] 1 2 6 1 1 2 2 1 6 6