在嵌套列表中查找包含子元素的顶级元素

时间:2019-03-21 13:40:42

标签: r

我想获取包含特定子元素的顶级元素的列表。假设我有一个嵌套列表:

v <- list(A=list('a', 'b', 'c'), B=list('c','d','e'), C=list('d'))

我试图获取具有特定子元素的所有顶级元素的列表:

  • 如果我要查找“ c”,我期望得到(“ A”,“ B”)。
  • 如果我要查找“ d”,我期望得到(“ B”,“ C”)

注意:希望使用base-R解决方案,但是看到其他人会很有趣

2 个答案:

答案 0 :(得分:2)

您可以使用Filter

names(Filter(function(x) "c" %in% x,v))
# [1] "A" "B"
names(Filter(function(x) "d" %in% x,v))
# [1] "B" "C"

或使用库 purrr

names(purrr::keep(v, ~"c" %in% .))
# [1] "A" "B"
names(purrr::modify_if(v, ~!"c" %in% ., ~NULL))
# [1] "A" "B"

答案 1 :(得分:2)

sapply替代Filter

names(v)[sapply(v, function(x) 'c' %in% x)]