如何为data.table

时间:2016-04-25 06:26:55

标签: r function data.table

我想创建一个用于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中传递输入参数?

1 个答案:

答案 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