Получить значения с помощью ключевого вектора (R)

Это фактически соответствует моему другому вопросу , но все становится сложнее. У меня есть data.frame и vector:

df <- data.frame(key=c(0,3:6), value=c(0,52,26,12,1))
x <- c(3,4,3,3,5,5,6,6,6,6)

, и мне нужно получить значения из df на основе x в качестве ключей:

[1] 52 26 52 52 12 12 1 1 1 1

Решение из предыдущего ответа может дать результат только без дубликатов:

df[df$key %in% x,"value"]
[1] 52 26 12  1

Есть ли способ решить эту проблему?

Кроме того, я вижу, что hash () может делать такие вещи, как:

h <- hash( keys=letters, values=1:26 )
h$a # 1
h[ "a" ]
h[[ "a" ]]

z <- rep(letters[3:5],2)

h[z] # still with NO duplicates
 containing 3 key-value pair(s).
c : 3
d : 4
e : 5

Но похоже, что он не может возвращать вектор значений с чем-то вроде:

h[[z]]
Error in h[[z]] : wrong arguments for subsetting an environment

В противном случае он было бы идеально, чтобы мы могли избавиться от data.frame, используя некую «настоящую» концепцию хеширования.

Спасибо!

5
задан Community 23 May 2017 в 11:45
поделиться