R data.table 在多个同名列中按列名选择特定列

问题描述 投票:0回答:1

尝试通过列名称选择特定的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”列?

r data.table
1个回答
1
投票

我不知道你为什么要使用重复的列名(似乎是一个糟糕的主意)。但你可以:

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
© www.soinside.com 2019 - 2024. All rights reserved.