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

求助:如何用R语言统计句子中偶数序号单词的数量?

统计句子中偶数序号单词的数量(R语言实现)

没问题,我来帮你搞定这个需求!在R里统计句子中偶数序号的单词数量其实很简单,我给你两种实现方式——一种用base R(不用额外装包),另一种用tidyverse生态的stringr包,你可以按需选择。

方法一:Base R 实现

这种方式不需要安装任何额外包,直接用R自带的函数就能完成:

count_even_words <- function(sentence) {
  # 将句子按空格拆分成单词向量(支持多个连续空格的情况)
  word_list <- strsplit(sentence, "\\s+")[[1]]
  # 筛选出偶数位置的单词(R的索引从1开始,所以取2、4、6...的位置)
  even_position_words <- word_list[seq(2, length(word_list), by = 2)]
  # 返回偶数位置单词的数量
  length(even_position_words)
}

# 测试你的示例句子
test_sentence <- "My name is XXXXX"
count_even_words(test_sentence) # 输出结果:2

方法二:使用stringr包实现

如果你平时习惯用tidyverse工具链,stringr的拆分函数会更直观:

首先确保你已经安装并加载了stringr包:

install.packages("stringr") # 仅第一次使用时需要安装
library(stringr)

然后实现计数函数:

count_even_words_stringr <- function(sentence) {
  word_list <- str_split(sentence, "\\s+")[[1]]
  even_position_words <- word_list[seq(2, length(word_list), by = 2)]
  length(even_position_words)
}

# 测试示例
count_even_words_stringr("My name is XXXXX") # 同样输出:2

关键步骤解释

  • 拆分句子:用strsplit()或str_split()按\\s+匹配(一个或多个空格)拆分,避免多个连续空格导致的空元素问题。
  • 筛选偶数位置:用seq(2, length(word_list), by = 2)生成从2开始、步长为2的索引序列,精准定位偶数序号的单词。
  • 计数:最后用length()获取筛选后单词向量的长度,就是我们要的偶数序号单词数量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 08:53:37