我制作了一个如下所示的嵌套列表。
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; ..
有没有这样做的功能?我经常与名单斗争。任何帮助将不胜感激
答案 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"