子集化数据表

时间:2016-07-22 08:22:59

标签: r dataframe data.table

示例R dataframe:

n = c(2, 3, 5) 
s = c("aa", "bb", "cc") 
b = c(TRUE, FALSE, TRUE) 
df = data.frame(n, s, b)  

我可以轻松地在数据框中对列进行子集,如下所示:

df.smaller <- df[c(1,2)]

  n  s
1 2 aa
2 3 bb
3 5 cc

非常方便!

然而,对于datatable(我认为使用datatable更容易)我没有找到这么快的方法来做同样的事情。如何快速轻松地对数据表执行相同的操作?

dt = data.table(df)
dt.smaller <- dt[c(1,2)]

   n  s     b
1: 2 aa  TRUE
2: 3 bb FALSE

将返回前两行。可能它只是一个逗号或我必须改变的东西,但我无法弄明白。

1 个答案:

答案 0 :(得分:2)

我们需要使用with = FALSE

dt[, 1:2, with = FALSE]

?data.table

中对此进行了解释
  

with:默认情况下为= TRUE,j在x的帧内进行计算;   列名可以用作变量。

     

当= = FALSE时,j是列名的字符向量,数字   列位置向量选择或形式startcol:endcol,   并且返回的值始终是data.table。通常为= FALSE   在data.table中有用,可以动态选择列