Answers:
对于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/issues/…–
                    从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]  按预期工作!
                    @Tom,非常感谢您指出此解决方案。这对我很有效。
我正在寻找一种方法,仅从打印内容和上面的示例中排除一列。要排除第二列,您可以执行以下操作
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]看看它到底是怎样一个有用的选项。