求助:如何用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
相关产品推荐
相关产品推荐

