2015-04-05 75 views
1

在R中,我想使用鍵值列表將鍵列值轉換爲值。它類似於:How to map a column through a dictionary in R,但我想使用列表而不是data.frame。R:使用鍵值列表將列映射到列

我試圖做到這一點使用列表和列:

d = list('a'=1, 'b'=2, 'c'=3) 
d[c('a', 'a', 'c', 'b')] # I want this to return c(1,1,3,2) but it doesn't 

然而,上述返回一個列表:

list('a'=1, 'a'=1, 'c'=3, 'b'=2) 
+0

嘗試''unlist'不公開(d [C( 'A', 'A', 'C', 'B')],use.names = FALSE)'它顯示的是一個向量。 – akrun 2015-04-05 05:11:23

+0

令人驚歎的,再次感謝。 – bcorso 2015-04-05 05:12:54

+0

讓它成爲答案,我會接受。謝謝! – bcorso 2015-04-05 05:19:05

回答

3

unlist是在這種情況下有用的功能

unlist(d[c('a', 'a', 'c', 'b')], use.names=FALSE) 
#[1] 1 1 3 2 

或者另一種選擇是stack,它將'key/value'作爲列返回'data.frame'。由子集劃分的值列中,我們得到

stack(d[c('a', 'a', 'c', 'b')])[,1] 
#[1] 1 1 3 2