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

如何在R data.table中按名称选择重名列中的特定列?

如何在data.table中选择重名的"a.2"列?

首先要明确:你在View(DT)里看到的a.2、a.3这类名称,是RStudio为了区分重名列自动添加的显示用后缀,并不是data.table实际存储的列名。实际列名还是colnames(DT)返回的重复值:"a", "a", "a", "b", "a"。所以直接用DT[, "a.2"]会找不到列,可通过以下方法解决:

方法1:通过列位置选择

如果确定目标列是第2列(对应View里的a.2),直接用索引选择:

# 选择第2列
DT[, 2]

# 用data.table的..语法保留列名
DT[, ..c(2)]

方法2:先重命名列,再按名称选择

用make.unique()给重复列名自动添加后缀,和View显示的命名规则一致,之后就能直接按名称选择:

# 重命名列,生成a、a.2、a.3、b、a.4的列名
setnames(DT, make.unique(colnames(DT)))

# 现在可直接选择a.2列
DT[, "a.2"]

方法3:通过列名匹配定位后选择

如果不确定目标列的位置,先找到所有名为"a"的列索引,再选取第2个:

# 定位所有"a"列的索引,取第2个
target_col <- which(colnames(DT) == "a")[2]

# 选择目标列
DT[, target_col, with = FALSE]

# 或者用.SDcols写法
DT[, .SD, .SDcols = target_col]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 04:34:59