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

如何在R中计算data.table列表列中每个列表的长度(无循环)

计算data.table列表列中每个列表的元素个数(无循环实现)

针对你已经通过str_extract_all提取出包含匹配结果的列表列new_var的场景,以下两种无循环方法可以高效计算每个列表的元素个数:

方法1:使用base R的lengths()函数(推荐)

lengths()是专门为列表设计的向量式长度计算函数,无需循环,性能优异,且无需额外加载包:

# 先模拟你的data.table场景(已包含new_var列)
library(data.table)
library(stringr)

dt <- data.table(
  text = c(
    "I agree with you, agree again", 
    "No agreement here", 
    "Agree to disagree", 
    ""
  )
)
# 生成你的new_var列(不区分大小写提取"agree")
dt[, new_var := str_extract_all(text, regex("agree", ignore_case = TRUE))]

# 计算每个列表的元素个数,新增count_agree列
dt[, count_agree := lengths(new_var)]

运行后dt会新增count_agree列,对应每个new_var列表的元素数量。

方法2:使用purrr的map_int()

如果你已经在使用tidyverse工具链,也可以用purrr::map_int()实现向量式计算:

library(purrr)

dt[, count_agree := map_int(new_var, length)]

这两种方法都是完全无循环的向量化操作,适配data.table的高效数据处理逻辑,不会出现循环带来的性能瓶颈。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 13:15:15