sds*_*sds 1 r subset multiple-columns data.table
我可以从以下几个列中选择data.frame:
> z[c("events","users")]
events users
1 26246016 201816
2 942767 158793
3 29211295 137205
4 30797086 124314
Run Code Online (Sandbox Code Playgroud)
但不是来自data.table:
> best[c("events","users")]
Starting binary search ...Error in `[.data.table`(best, c("events", "users")) :
typeof x.pixel_id (integer) != typeof i.V1 (character)
Calls: [ -> [.data.table
Run Code Online (Sandbox Code Playgroud)
我该怎么办?有没有比把data.table背部变成一个data.frame更好的方法?
鉴于你正在寻找一个data.table后卫,你应该使用list而不是c在j通话中.
z[, list(events,users)] # first comma is important
Run Code Online (Sandbox Code Playgroud)
请注意,您不需要围绕列名称的引号.
列子集应该在j,而不是在i.改为:
DT[, c("x", "y"), with=FALSE]
Run Code Online (Sandbox Code Playgroud)
在with=FALSE可以确保j不计算为一个表达式.如果您正在寻找与data.frame上的子集相似的方法,那么这基本上是列子集的惯用方法.
查看此演示文稿(幻灯片4)以了解如何阅读data.table语法(更像SQL).这有助于说服你提供列更有意义j- 相当于SQL中的SELECT.