如何创建一个方法来访问结构中的data.table?

时间:2017-08-14 19:06:11

标签: r data.table

假设我有这个:

dt <- data.table(x = 1:10, y = 1:2)
s <- structure(list(dt = dt), class = 'dt_test')

我想为类dt_test的对象定义一个函数,该函数将其参数传递给dt。所以例如我希望能够做像

这样的事情
s[, sum(x), by = y]
s[, z := x + y]

其中[适用于dt。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:0)

可以这样做,但我不确定是否应该这样做。为[定义一个将其参数发送到data.table的方法非常简单:

`[.dt_test` <- function(x, ...){
  x[[1]][...]
}

s[, sum(x), by = y]

您必须为所有支持的泛型做类似的事情,例如,您可能还需要定义[[

我宁愿建议直接在列表中引用data.table,就像Majo在他对你的问题的评论中所建议的那样。这样你就可以更容易理解你的代码中真正发生的事情,可能是其他可能正在阅读它的人(例如未来的你)。