示例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
将返回前两行。可能它只是一个逗号或我必须改变的东西,但我无法弄明白。
答案 0 :(得分:2)
我们需要使用with = FALSE
dt[, 1:2, with = FALSE]
?data.table
with:默认情况下为= TRUE,j在x的帧内进行计算; 列名可以用作变量。
当= = FALSE时,j是列名的字符向量,数字 列位置向量选择或形式startcol:endcol, 并且返回的值始终是data.table。通常为= FALSE 在data.table中有用,可以动态选择列