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]
看看它到底是怎样一个有用的选项。