获取R中嵌套列表的列表和列表元素名称

时间:2017-08-02 04:56:13

标签: r list

我制作了一个如下所示的嵌套列表。

group1 <- list(color = c("red", "green", "blue"),taste = c("sweet", "sour"))
group2 <- list(color = c("orange","purple","yellow"),taste = c("tan", "salt"))
nestedlist <- list(group1, group2)

现在从这个&#34;嵌套列表&#34;,我想找出一个元素属于哪个组以及它属于哪个列表元素。请原谅我对列表结构缺乏了解。

例如

test <- c("red", "tan")

给定测试我希望返回&#34; color&#34; &#34;组1&#34;和&#34;味道&#34; &#34;组2&#34; ..

有没有这样做的功能?我经常与名单斗争。任何帮助将不胜感激

2 个答案:

答案 0 :(得分:2)

这是一个可能的解决方案:

dat = lapply(test,function(z){sapply(nestedlist,function(x) 
                                        {sapply(x,function(y) {z %in% y})})})
do.call(rbind,lapply(dat, function(x) {c(group = which(sapply(x,any)),
                                 col = names(which(x[[which(sapply(x,any))]])))}))

输出:

     group col     
[1,] "1"   "color" 
[2,] "2"   "taste"

如果一个组的嵌套列表多于另一个组,它也可以工作,这是我最初的努力。很想看到别人的解决方案,希望这有帮助!

答案 1 :(得分:1)

这是另一种方法......

names(nestedlist) <- paste0("Group",1:length(nestedlist)) #add names to list
lookup <- unlist(nestedlist) #unlist, retaining names
names(lookup)[match(test,lookup)] #lookup matching names

[1] "Group1.color1" "Group2.taste1"