【问题标题】:How to create function for data.table如何为 data.table 创建函数
【发布时间】:2016-04-25 06:26:54
【问题描述】:

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

【问题讨论】:

  • 函数已经存在,比如data.table:::`[.data.table`(DT, j=.N, by=y)。不过,我怀疑您是否需要像这样使用它。使用 foo 而不是 []s 有什么好处?
  • @Frank 我正在尝试使用相同的by 调用 DT。我想知道我们是否可以创建函数来帮助它。

标签: r function data.table


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-07
    • 2012-08-06
    • 2020-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多