这里,
a<-c("Look at the sky", "Sun is bright", "cloudy day")
b<-c("sky", "day")
我想基于
a
子集b
。我的首选答案是:"Look at the sky", "cloudy day"
如何在R中执行此操作?
最佳答案
选项1
您可以使用sapply
将a与b中的所有术语匹配
sapply(b, grepl, a)
sky day
[1,] TRUE FALSE
[2,] FALSE FALSE
[3,] FALSE TRUE
然后,用
apply
和子集a
折叠所有行。a[apply(sapply(b, grepl, a), 1, any)]
[1] "Look at the sky" "cloudy day"
选项2
创建组合的正则表达式模式
paste(b, collapse="|")
[1] "sky|day"
和grep一起
a[grepl(paste(b, collapse="|"), a)]
[1] "Look at the sky" "cloudy day"