我有一串数字和一个列表:
a <- c(1,2,3)
b <- list( x<-c(1:5),y<-c(1:10),z<-c(10:20))
我想要做的是测试每个数字是否在列表的每个元素中——1 是否在 x 中,2 是否在 y 中,3 是否在 z 中。然后给一个新变量 1/0。
我的代码:
d <- ifelse(a %in% sapply(b,function(x) unlist(x)),1,0)
然而结果:
> d
[1] 0 0 0
理想的结果应该是:
[1] 1 1 0
我怎样才能做到这一点?谢谢
最佳答案
您正在遍历两组匹配的数据,这表明 Map/mapply
:
mapply(`%in%`, a, b)
#[1] TRUE TRUE FALSE
as.integer(mapply(`%in%`, a, b))
#[1] 1 1 0
关于R 测试列表是否包含字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38908468/