如何将语句切分为最多n词的字符串?求R语言快速实现方法
在R语言中快速生成最多含3个词的滑动字符串块
问题
给定这段文本:
passage <- "Approximately 60 cases have been reported in the medical literature. Onset is in infancy."
需要把它切分成最多包含3个词的滑动字符串块,最终输出要和示例一致。
解决方案
用基础R就能快速实现,不需要额外安装包,步骤如下:
- 拆分文本为单个词的向量
words <- strsplit(passage, " ")[[1]]
- 遍历每个词的位置,生成1到3个词的滑动组合
word_count <- length(words) output <- unlist(lapply(1:word_count, function(pos) { # 计算当前位置能取到的最大词数(最多3个) max_words <- min(3, word_count - pos + 1) # 生成1到max_words个词的拼接字符串 sapply(1:max_words, function(k) paste(words[pos:(pos + k - 1)], collapse = " ")) }))
- 查看结果
print(output)
原理说明
strsplit按空格把文本拆分成独立的词向量,这是后续操作的基础。- 遍历每个词的位置
pos,对每个位置,先确定能取到的最大词数(不能超过3个,也不能超出剩余词的数量)。 - 对每个位置,生成1、2(如果有)、3(如果有)个词的拼接结果,最后用
unlist把所有结果合并成一个向量,就是需要的输出。
如果你习惯用purrr包,也可以用map系列函数替代lapply,但基础R的写法已经足够高效,无需额外依赖。
内容的提问来源于stack exchange,提问作者Adrian
相关产品推荐
相关产品推荐

