如何使用某些列名的字符向量 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
我刚刚创建了一个包含 disp
、hp
和 wt
的向量,然后我 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.
我正在尝试 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
我刚刚创建了一个包含 disp
、hp
和 wt
的向量,然后我 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.