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

如何在data.table中通过列名向量批量拼接多列内容

用data.table通过列名向量拼接多列成新字符列

方法1:do.call + .SD实现批量拼接

这是data.table原生的高效写法,适合批量处理大量列:

library(data.table)
mydata <- data.table(a = "here", b = 1, c = "example")
mycols <- names(mydata)[1:3]

# 核心代码
mydata[, d := do.call(paste0, .SD), .SDcols = mycols]
  • .SD代表当前分组下的数据子集,.SDcols指定要参与拼接的列(即你的列名向量)
  • do.call(paste0, .SD)会自动把.SD中的每一列作为单独参数传给paste0,实现逐行拼接所有指定列的内容

方法2:用purrr::reduce逐列拼接

如果你熟悉tidyverse工具链,也可以用reduce来迭代拼接列:

library(purrr)
mydata[, d := reduce(.SD, paste0), .SDcols = mycols]

你的尝试失败原因

  • get(mycols)报错:get()仅支持单个字符参数,无法接收列名向量,因此提示"first argument has length > 1"
  • eval(paste0("get(",mycols,")"))报错:该代码会生成三个独立的向量(对应三列),paste0处理后返回3个值,但你要赋值给1列,导致长度不匹配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 20:55:02