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

R语言data.table用lapply分组求和报unused arguments错误

报错原因

从报错信息中的[.data.frame标识可直接定位根因:你当前调用的sdi对象是基础R的data.frame类型,而非data.table类型。
你使用的分组求和语法是data.table包的专属语法,基础R内置的data.frame取子集方法不识别by、.SDcols、.SD这类data.table专属参数,因此抛出存在未使用的参数错误。
该段代码在其他数据集上可正常运行,是因为那些数据集已经被转换为data.table对象,天然适配这套语法规则。
可以运行class(sdi)验证对象类型,如果返回的类型向量中不包含data.table,即可确认是该问题。

解决方法

二选一即可:

  • 方法1:将sdi转换为data.table后运行原有代码
library(data.table)
# 原地转换为data.table对象
setDT(sdi)
# 原有代码可直接执行得到正确结果
sdi_sum <- sdi[, lapply(.SD, sum), by = c("location_id", "year_id", "sex_id"), .SDcols = c("sdi_value")]
  • 方法2:不依赖data.table,用dplyr实现等价的分组求和逻辑
library(dplyr)
sdi_sum <- sdi |> 
  group_by(location_id, year_id, sex_id) |> 
  summarise(sdi_value = sum(sdi_value), .groups = "drop")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 03:48:28