2015-04-05 104 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