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

如何从stringr::words及采样样本new中找出5个最长单词(禁用grep)

解答两个关于提取最长单词的R语言问题

问题1:从stringr::words中找出5个最长的单词

要搞定这个问题,核心思路就是先算出每个单词的长度,再按长度从大到小排序,最后取前5个就行。具体代码如下:

# 先加载stringr包(如果还没加载的话)
library(stringr)

# 计算每个单词的长度
word_lengths <- nchar(stringr::words)

# 把单词和对应的长度组合成数据框,方便后续排序和查看
word_data <- data.frame(
  word = stringr::words,
  length = word_lengths
)

# 按长度降序排序,然后取前5条记录
top5_longest_words <- head(word_data[order(-word_data$length), ], 5)

# 输出结果
print(top5_longest_words)

运行这段代码后,你就能得到stringr::words里长度排前5的单词,还会附带它们的长度,一目了然。

问题2:从采样样本new中找出5个最长单词(禁止使用grep)

先说明下:grep是用来做模式匹配的,咱们这个需求根本用不上它,所以完全可以用和问题1类似的思路解决,甚至能更简洁。假设你的new是从stringr::words采样得到的(比如new <- sample(stringr::words, 100)),下面给你两种实现方式:

方法一:数据框方式(清晰直观)

# 计算样本中每个单词的长度
new_word_lengths <- nchar(new)

# 组合成数据框
new_word_data <- data.frame(
  word = new,
  length = new_word_lengths
)

# 降序排序后取前5
top5_new_longest <- head(new_word_data[order(-new_word_data$length), ], 5)

print(top5_new_longest)

方法二:向量直接操作(更简洁)

如果不想用数据框,直接对向量操作也能搞定,代码更短:

# 按单词长度降序排列样本中的单词
sorted_new <- new[order(-nchar(new))]

# 取前5个就是最长的
top5_new_longest <- sorted_new[1:5]

print(top5_new_longest)

这两种方法都完全避开了grep,完美满足你的要求~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:10:41