我有一个由以下代码创建的列表:
lst <- list(c(c(1,2,3)), c(3,4,5))
names(lst) <- c("A","B")
看起来像这样:
> lst
$`A`
[1] 1 2 3
$B
[1] 3 4 5
如何以对每个列表元素返回true或false的方式来进行匹配的值?然后,如何提取正确的列表名称。因此,在此示例中,如果我想将值匹配为“ 2”,我想返回
[1] TRUE, FALSE
然后我想返回正确的列表名称,这样:
[1] "A"
如果我的值与3匹配,我会想要:
[1] TRUE, TRUE
和
[1] "A", "B"
我找不到实现此目标的方法。
谢谢。
答案 0 :(得分:4)
您可以这样做:
val = 3
names(lst)[sapply(lst, function(x) val %in% x)]
[1] "A" "B"
说明:
sapply(lst, function(x) val %in% x))
:返回布尔值向量names
:根据布尔值获取名称答案 1 :(得分:2)
尝试一下:
lst = list(A = c(c(1,2,3)), B = c(3,4,5))
searchValue = 2
z = sapply(lst, function(x){ searchValue%in%x })
结果:
> z
A B
TRUE FALSE
> names(z)[z]
[1] "A"