Как мы можем выбрать несколько столбцов, используя вектор их числовых индексов (позиции) в data.table
?
Вот как мы будем делать с data.frame
:
df <- data.frame(a = 1, b = 2, c = 3)
df[ , 2:3]
# b c
# 1 2 3
r
data.table
jamborta
источник
источник
dt[,"a"]
иdt[,"a", with=FALSE]
посмотрите, какой это полезный вариант.DT[,list(b:c)
, как мне показалось удобным преобразовать столбцы непосредственно в таблице данных, например, я могу сделатьDT[,list(1/b,2*c)]
, но это не работает с.with=FALSE
ненужным: github.com/Rdatatable/data.table/issues/…data.frame
совместимого способа использованияwith=FALSE
. Тем не менее, по состоянию на около 3 недель назад, разрабатываемая версия data.table была изменена на звонки , какdt[, 2]
,dt[, 2:3]
,dt[, "b"]
, иdt[, c("b", "c")]
ведут себя так же , как они делают в сdata.frame
й без необходимости явно устанавливатьwith=FALSE
. Это потрясающе! Смотрите здесь для конкретной фиксации, включая запись NEWS, описывающую изменения.Это немного многословно, но я привык к использованию скрытой
.SD
переменной.Это немного хлопотно, но вы не теряете других функций data.table (я не думаю), поэтому вы все равно должны иметь возможность использовать другие важные функции, такие как таблицы соединений и т. Д.
источник
Если вы хотите использовать имена столбцов для выбора столбцов, просто используйте
.()
, который является псевдонимом дляlist()
:источник
Начиная с v1.10.2, вы также можете использовать
..
источник
dt[, !..keep_cols]
иdt[, -..keep_cols]
работает как ожидалось!@ Том, большое спасибо за указание на это решение. Это прекрасно работает для меня.
Я искал способ просто исключить один столбец из печати и из приведенного выше примера. Чтобы исключить второй столбец, вы можете сделать что-то вроде этого
источник