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

如何用lapply与strsplit找出g.list中回复单词数最多的受访者

解决方案:找出回复单词数最多的受访者

问题分析

你当前代码的核心错误在于对strsplit()的返回结构处理不当:

  • strsplit()作用于单个字符串时,返回的是包含一个字符向量的列表,而非直接的向量
  • 你使用unlist(g.split)后,拆分后的单词被拆成了独立的单个字符串元素,再用lapply(..., length)得到的是每个单个字符串的长度(自然都是1)

正确实现代码

步骤1:计算每个受访者的回复单词数

直接对g.list使用lapply(),在匿名函数中完成拆分并取向量长度:

# 计算每个受访者的回复单词数
g.count <- lapply(g.list, function(reply) {
  # strsplit返回列表,取[[1]]得到拆分后的单词向量,再计算长度
  length(strsplit(reply, " ")[[1]])
})

步骤2:找出单词数最多的受访者

将计数结果转为数值向量后,筛选出最大值对应的ID:

# 转为数值向量,保留受访者ID作为名称
count_vec <- unlist(g.count)
# 获取最大单词数
max_word_count <- max(count_vec)
# 获取所有达到最大单词数的受访者ID
top_respondents <- names(count_vec[count_vec == max_word_count])

验证效果

用你提供的示例g.list测试:

  • 受访者1590610566的回复拆分后有7个单词,对应的计数会是7
  • 执行max(count_vec)会得到7,top_respondents会返回"1590610566"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 08:56:06