列表中的值匹配
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"
解释:
sapply(lst, function(x) val %in% x))
: returns 布尔值向量
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"
我有一个这样的代码创建的列表:
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"
解释:
sapply(lst, function(x) val %in% x))
: returns 布尔值向量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"