这里,

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"

10-08 19:38