这里,
a<-c("Look at the sky", "Sun is bright", "cloudy day")
b<-c("sky", "day")
我想根据b
对a
进行子集化。我首选的答案是:
"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"
关于string - R:子集匹配的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23241723/