如何使用某些列名的字符向量 data.table 中的 select 列?

How to select columns in data.table using a character vector of certain column names?

我正在尝试 select data.table 中名称出现在我的字符向量中的那些列。该操作在纯 data.frame 中有效,但在 data.table 中无效。这是一个可重现的例子。

> names(mtcars)
 [1] "mpg"  "cyl"  "disp" "hp"   "drat" "wt"   "qsec" "vs"   "am"   "gear"
[11] "carb"
> myVector <- c('disp', 'hp', 'wt')
> head(mtcars[, myVector])
                  disp  hp    wt
Mazda RX4          160 110 2.620
Mazda RX4 Wag      160 110 2.875
Datsun 710         108  93 2.320
Hornet 4 Drive     258 110 3.215
Hornet Sportabout  360 175 3.440
Valiant            225 105 3.460

我刚刚创建了一个包含 disphpwt 的向量,然后我 select 使用它编辑了 data.frame 中的相应列向量。现在让我们从我的 data.frame 中创建一个 data.table 对象并尝试执行相同的操作。

> library(data.table)
> mtcarsDT <- data.table(mtcars)
> mtcarsDT[, myVector]
[1] "disp" "hp"   "wt"  

我们可以使用 .. 符号来查找 myVector 作为列位置的向量,就像它在 data.frame

中一样
mtcarsDT[, ..myVector]

根据?data.table

In case of overlapping variables names inside dataset and in parent scope you can use double dot prefix ..cols to explicitly refer to 'cols variable parent scope and not from your dataset.