当我使用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"
谢谢
答案 0 :(得分:1)
您可以使用以下grep
解决方案:
vec = c("POP MUSIC", "TOP THE POPS", "POPEYE", "MARY POPPINS")
grep("(?i)\\bPOPS?\\b", vec, value = TRUE)
请参阅IDEONE demo
正则表达式(?i)\\bPOPS?\\b
以不区分大小写的方式匹配整个单词POP
或POPS
(由于(?i)
),如果找到,则返回值(到期)到value=TRUE
)。
您可能需要根据需要调整正则表达式(例如(?i)\\bPOP(S|PING)?\\b
也允许popping
)。