You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何统计R数据框CV列每行中字符'V'的出现次数?

在R语言中统计数据框每行字符串中指定字符的出现次数

问题原因

你之前用rowSums(dutch4 == "V")得到全0的结果,是因为这段代码是将数据框的每个单元格整体和字符串"V"做相等判断,而CV列的每个元素是包含多个字符的字符串(比如VːxtVppVl),不是单个字符的向量,所以所有比较结果都是FALSE,求和自然为0。

三种正确实现方法

方法1:使用stringr包的str_count(最简洁)

stringr包是专门处理字符串的工具,str_count可以直接统计字符串中目标字符的出现次数:

# 未安装包先运行:install.packages("stringr")
library(stringr)
dutch4$vowelCount <- str_count(dutch4$CV, pattern = "V")

方法2:基础R方法(无需额外包)

用gregexpr定位字符位置,再用lengths统计数量:

dutch4$vowelCount <- lengths(gregexpr(pattern = "V", text = dutch4$CV, fixed = TRUE))
  • gregexpr返回每个字符串中"V"的位置索引,结果为列表格式
  • lengths统计列表中每个元素的长度,即"V"的出现次数
  • fixed = TRUE表示精确匹配字符,避免正则表达式规则干扰

方法3:拆分字符后统计(基础R)

先把每个字符串拆成单个字符的向量,再统计其中"V"的数量:

dutch4$vowelCount <- sapply(strsplit(dutch4$CV, split = ""), function(x) sum(x == "V"))
  • strsplit将每个字符串按空字符拆分,得到单个字符的向量列表
  • sapply遍历列表中的每个向量,统计等于"V"的元素个数

验证结果

运行任意一种方法后,dutch4会新增vowelCount列,结果如下:

DutchOrthographyIPACVvowelCount
aagtappelaːxtɑppɛlVːxtVppVl3
aagtaːxtVːxt1
aaibaaraːjɪbaːrVːjVbVːr3
aaibaarheidaːjɪbaːrhɛjtVːjVbVːrhVjt4
aaienaːjɛnVːjVn2

内容的提问来源于stack exchange,提问作者Thomas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 12:05:56