Как выбрать столбцы в 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 и я выбрал соответствующие столбцы в моем data.frame, используя этот вектор. Теперь сделаем объект data.table из моего data.frame и попытаемся выполнить ту же операцию.

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

Ответы

Ответ 1

Мы можем использовать with=FALSE для выполнения той же операции, что и в data.frame

mtcarsDT[, myVector, with=FALSE]

Согласно " ?data.table

с: По умолчанию 'with = TRUE и' j оценивается в пределах 'x; имена столбцов могут использоваться как переменные. Когда 'with = FALSE' j является символьным вектором имен столбцов или числовым вектором позиций столбцов для выбора, а возвращаемое значение всегда является "таблицей данных". 'with = FALSE часто используется в таблице data.table для динамического выбора столбцов.