1

当我使用grepl.

想象一下我的向量是

 vec = c("POP MUSIC",  "TOP THE POPS", "POPEYE", "MARY POPPINS") 

grepl POP当我在视觉上识别流行音乐时,我想这样做。在我的示例中,我想排除"POPEYE", "MARY POPPINS".

我怎么能做类似的事情?为什么这行代码不起作用?

vec[ grepl("POP", vec ) & grepl("^POPEY$", vec ) & grepl("^MARY POPPINS$", vec ) ] 

期望的结果

"POP MUSIC" "TOP THE POPS"

谢谢

4

1 回答 1

1

您可以使用以下grep解决方案:

vec = c("POP MUSIC",  "TOP THE POPS", "POPEYE", "MARY POPPINS") 
grep("(?i)\\bPOPS?\\b", vec, value = TRUE)

IDEONE 演示

正则表达式(?i)\\bPOPS?\\b匹配整个单词POPPOPS以不区分大小写的方式(由于(?i))匹配,如果找到,则返回值(由于value=TRUE)。

您可能需要根据需要调整正则表达式(例如(?i)\\bPOP(S|PING)?\\b也允许popping)。

于 2015-10-09T15:25:54.370 回答