我们说我有以下data.frame和以下data.table:
DF = data.frame(x=rep(c("a","b","c"),each=3), y=c(1,3,6), v=1:9)
DT = data.table(x=rep(c("a","b","c"),each=3), y=c(1,3,6), v=1:9)
使用data.frame,我可以根据逻辑向量选择列,如下所示:
DF[,c(TRUE,TRUE,FALSE)]
结果是:
x y
1 a 1
2 a 3
3 a 6
4 b 1
5 b 3
6 b 6
7 c 1
8 c 3
9 c 6
然而
DT[,c(TRUE,TRUE,FALSE)]
导致:
[1] TRUE TRUE FALSE
怎么做?
答案 0 :(得分:11)
我们需要with=FALSE
DT[, c(TRUE, TRUE, FALSE), with=FALSE]
基于?data.table
默认情况下为= TRUE,j在x的帧内进行评估;柱 名称可以用作变量。当= FALSE时j是一个字符 列名称的向量或列位置的数字向量 select,返回的值始终是data.table。 with = FALSE是 通常在data.table中有用,可以动态选择列。