Это фактически соответствует моему другому вопросу , но все становится сложнее. У меня есть 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, используя некую «настоящую» концепцию хеширования.
Спасибо!