根据逻辑向量选择data.table中的列

时间:2015-10-23 12:05:14

标签: r data.table logical-operators

我们说我有以下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

怎么做?

1 个答案:

答案 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中有用,可以动态选择列。