R语言通配符模式匹配实现字符串关键词出现次数统计
R语言统计字符串中指定关键词总出现次数的实现方案
已知定义的变量如下:
text <- "AWAYTEAM IS XXX. I THINK THEAWAYTEAM WILL WIN" keyword <- c("AWAY","WIN")
我们需要统计所有关键词在text中的总出现次数,示例预期输出为3,以下是两种可行方案:
方案1:使用stringr包实现(推荐,代码简洁易读)
- 步骤1:安装并加载stringr包(已安装可跳过安装步骤)
# 安装包(仅首次使用需要运行) install.packages("stringr") # 加载包 library(stringr)
- 步骤2:统计总次数
total_count <- sum(str_count(text, keyword))
运行后total_count的值就是3,符合预期。str_count会向量化统计每个关键词的出现次数,通过sum直接求和即可得到总次数。
方案2:Base R 实现(无需额外安装依赖)
使用R内置的gregexpr函数实现,不需要安装第三方包:
total_count <- sum(sapply(keyword, function(k) { match_res <- gregexpr(k, text)[[1]] # 处理关键词未匹配到的情况 ifelse(match_res[1] == -1, 0, length(match_res)) }))
运行后同样可以得到总次数3。
注意事项
- 上述方案默认是子串匹配,即只要关键词出现在文本的任意位置就算一次匹配,和示例的匹配逻辑一致。
- 如果需要匹配独立完整单词,可对关键词添加单词边界修饰:
# 匹配完整单词的版本 keyword_whole <- paste0("\\b", keyword, "\\b") # 替换到上述统计逻辑中即可只匹配独立的关键词单词
内容的提问来源于stack exchange,提问作者user9532692
相关产品推荐
相关产品推荐

