我正在尝试data.table
为拆分-应用-组合使用(如aggregate
等ddply
)编写一个简单的包装器,以便从data.table
的速度中获益,但不使用其数据结构或语法。我尝试了以下方法。
fold = function(df, by, ...)
{
library(data.table)
dt = data.table(df)
dt = dt[, eval(substitute(list(...))), by]
df = as.data.frame(dt)
return(df)
}
a = data.frame(x=c(1,1,1,2,2,2), y=runif(6))
b = fold(a, "x", y_min=min(y), y_max=max(y))
print(a)
print(b)
当我把它放在一个脚本中时这很好用source
,但是当我把这个函数放在一个包中时,安装它并尝试使用它,我得到
Error in eval(expr, envir, enclos) : object 'y' not found
Calls: fold -> [ -> [.data.table -> [.data.frame -> eval -> eval
除了一般地尝试这个之外,我做错了什么?