在R语言中检测文本向量是否包含指定文本的最优方法
在R语言中检测文本是否存在于另一变量的最优方法
你当前代码的问题是搞反了grepl()的参数顺序——grepl(pattern, x)中,pattern是要查找的子串,x是待检查的目标字符串。你用长文本a作为模式去匹配b中的短字符串,自然匹配不到符合预期的结果。
正确的base R实现
a <- 'homer simpson the third' b <- c('homer simpson','marge','bart') # 用b的每个元素作为查找模式,检查是否在a中存在 grepl(b, a) # 返回结果:TRUE FALSE FALSE
可选的tidyverse风格实现
如果你已经在使用tidyverse生态,stringr包的str_detect()语法更直观,效果一致:
library(stringr) str_detect(a, b) # 返回结果:TRUE FALSE FALSE
最优方法说明
- 若仅依赖base R,
grepl()是最优选择:它无需额外安装包,执行效率高,完全满足需求。 - 若项目已引入tidyverse,
str_detect()的可读性更好,性能与grepl()几乎无差异,可根据代码风格偏好选择。
内容的提问来源于stack exchange,提问作者jsimpsno
相关产品推荐
相关产品推荐

