列表中的值匹配

value match within a list

我有一个这样的代码创建的列表:

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

如何以 return 每个列表元素为真或假的方式对匹配值进行赋值?然后我怎样才能提取这是真的列表的名称。所以在这个例子中,如果我想匹配“2”,我想 return

[1] TRUE, FALSE

然后我想 return 列表的名称是这样的所以:

[1] "A"

如果我的值匹配 3 我会想要:

[1] TRUE, TRUE

[1] "A", "B"

我找不到实现此目的的方法。

谢谢。

你可以这样做:

val = 3
names(lst)[sapply(lst, function(x) val %in% x)]

[1] "A" "B"

解释:

  1. sapply(lst, function(x) val %in% x)): returns 布尔值向量
  2. names:根据布尔值取名字

试试这个:

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"