Відповіді:
Для версій data.table >= 1.9.8
працюють лише такі:
library(data.table)
dt <- data.table(a = 1, b = 2, c = 3)
# select single column by index
dt[, 2]
# b
# 1: 2
# select multiple columns by index
dt[, 2:3]
# b c
# 1: 2 3
# select single column by name
dt[, "a"]
# a
# 1: 1
# select multiple columns by name
dt[, c("a", "b")]
# a b
# 1: 1 2
Про версії data.table < 1.9.8
(для вибору чисельного стовпця потрібне використання with = FALSE
) див. Попередню версію цієї відповіді. Дивіться також НОВИНИ на v1.9.8, ПОТЕНЦІАЛЬНІ ЗМІНИ, пункт 3.
DT[,list(b:c)
, як мені було зручно перетворювати стовпці безпосередньо в таблиці даних, наприклад, я можу це зробити DT[,list(1/b,2*c)]
, але це не працює з.
with=FALSE
у цьому випадку зроблять непотрібними: github.com/Rdatatable/data.table/isissue/…
data.frame
сумісного способу використання with=FALSE
. Тим НЕ менше, станом на близько 3 тижнів тому, що розробляється версія data.table була змінена на дзвінки , як dt[, 2]
, dt[, 2:3]
, dt[, "b"]
, і dt[, c("b", "c")]
поводяться так само , як вони роблять в с data.frame
й без необхідності явно встановлювати with=FALSE
. Це надзвичайно! Дивіться тут про конкретний комітет, включаючи запис НОВИНИ, що описує зміни.
Це трохи багатослівно, але я звик використовувати приховану .SD
змінну.
b<-data.table(a=1,b=2,c=3,d=4)
b[,.SD,.SDcols=c(1:2)]
Це трохи клопоту, але ви не втрачаєте інших функцій data.table (я не думаю), тому ви все одно зможете використовувати інші важливі функції, такі як таблиці приєднання тощо.
Від v1.10.2 і далі ви також можете користуватися ..
dt <- data.table(a=1:2, b=2:3, c=3:4)
keep_cols = c("a", "c")
dt[, ..keep_cols]
dt[, !..keep_cols]
і dt[, -..keep_cols]
працює, як очікувалося!
@Том, дуже дякую, що вказали на це рішення. Це чудово працює для мене.
Я шукав спосіб просто виключити один стовпчик із друку та із наведеного вище прикладу. Щоб виключити другий стовпець, ви можете зробити щось подібне
library(data.table)
dt <- data.table(a=1:2, b=2:3, c=3:4)
dt[,.SD,.SDcols=-2]
dt[,.SD,.SDcols=c(1,3)]
dt[,"a"]
іdt[,"a", with=FALSE]
побачите, який корисний варіант це насправді.