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

data.table中如何同时保留.SD/.SDcols与非.SD变量的原有名称

解决方案

方法1:用cbind拼接(推荐)

直接在j表达式中用cbind拼接手动选择的列和.SD即可自动保留所有列的原有名称,支持多列选择,无需额外手动命名,也完美兼容patterns匹配规则:

# 选择单个非.SD列
DT[, cbind(a, .SD), .SDcols = x:y]

# 选择多个非.SD列
DT[, cbind(a, b, .SD), .SDcols = x:y]

# 配合patterns匹配.SD列示例
DT[, cbind(a, .SD), .SDcols = patterns("^[xvy]")]

运行后输出的列名为a, x, v, y,完全保留原始名称。

方法2:显式给手动选择的列命名

如果需要自定义列名,或者偏好使用列表拼接的写法,可以显式给非.SD列指定名称:

DT[, c(a = .(a), .SD), .SDcols = x:y]

输出结果和方法1完全一致。


原写法问题说明

你之前使用c(.(a), .SD)的写法时,.()生成的是无名称列表,第一个元素没有显式命名,data.table会自动分配默认名称V1,只要给手动选择的列补充名称或者用cbind自动继承名称即可解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 09:09:01