在R中使用模式匹配统计每个字符串内指定模式的出现次数
R语言实现不区分大小写统计字符串中指定模式出现次数的方法
示例输入向量
vector1 <- c("Frank frank", "Frank", "Fred", "frank")
目标是统计每个元素中Frank/frank的出现次数,最终得到2 1 0 1的结果。
方法1:使用stringr包的str_count函数(代码更简洁)
# 未安装包先执行 install.packages("stringr") library(stringr) # 开启不区分大小写匹配 result <- str_count(vector1, regex("frank", ignore_case = TRUE))
如果需要严格匹配独立单词、避免命中franklin这类包含目标字符串的单词,可以加上单词边界规则:
result <- str_count(vector1, regex("\\bfrank\\b", ignore_case = TRUE))
方法2:Base R原生实现(无需额外安装包)
# 先获取每个字符串的匹配位置列表 matches <- gregexpr("frank", vector1, ignore.case = TRUE) # 统计每个字符串的匹配次数,无匹配时返回0 result <- sapply(matches, function(x) sum(x > 0))
以上两种方法执行后输出result都可以得到预期结果。
内容的提问来源于stack exchange,提问作者David Moore
相关产品推荐
相关产品推荐

