我想创建一个用于data.table的函数。假设我们有
library(data.table)
DT = data.table(x=rep(c("a","b","c"),each=3), y=c(1,3,6), v=1:9)
foo <- function(data, field, grp){
data[, field, by=grp]
}
我试过了
foo(DT, .N, grp = y)
或
foo(DT, y)
他们返回错误。如何在data.table中传递输入参数?
答案 0 :(得分:1)
您实质上是要重新发明函数[.data.table
。 [
函数在数据表的上下文中对第二个参数j
执行隐式计算。在按群组获取计数的情况下,它只是:
DT[ ,.N, by=y]
y N
1: 1 3
2: 3 3
3: 6 3
如果您想按群组进行序列,那可能就是:
> DT[ ,1:.N, by=y]
y V1
1: 1 1
2: 1 2
3: 1 3
4: 3 1
5: 3 2
6: 3 3
7: 6 1
8: 6 2
9: 6 3