假设我有这个:
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。我怎样才能做到这一点?
答案 0 :(得分:0)
可以这样做,但我不确定是否应该这样做。为[
定义一个将其参数发送到data.table的方法非常简单:
`[.dt_test` <- function(x, ...){
x[[1]][...]
}
s[, sum(x), by = y]
您必须为所有支持的泛型做类似的事情,例如,您可能还需要定义[[
。
我宁愿建议直接在列表中引用data.table,就像Majo在他对你的问题的评论中所建议的那样。这样你就可以更容易理解你的代码中真正发生的事情,可能是其他可能正在阅读它的人(例如未来的你)。