尝试通过列名称选择特定的DT列,但该DT有多个同名列:
DT = data.table(a=1:3, a=4:6, a=7:9, b=10:12, a=13:15)
> DT
a a a b a
1: 1 4 7 10 13
2: 2 5 8 11 14
3: 3 6 9 12 15
DT 别名相同:
> colnames(DT)
[1] "a" "a" "a" "b" "a"
但是查看DT“colnames”是不同的:
View(DT)
如何通过名称选择“a.2”列?
我不知道你为什么要使用重复的列名(似乎是一个糟糕的主意)。但你可以:
DT[, .SD, .SDcols = names(DT) == "a" & rowid(names(DT)) == 3L]
# a
# <int>
# 1: 7
# 2: 8
# 3: 9
您也可以像 Rstudio 中的
View()
那样修复名称:
setnames(DT, make.unique(names(DT)))
# > DT
# a a.1 a.2 b a.3
# <int> <int> <int> <int> <int>
# 1: 1 4 7 10 13
# 2: 2 5 8 11 14
# 3: 3 6 9 12 15