我希望能够编写一个data.table
按组运行回归的函数,然后很好地组织结果。这是我想做的一个示例:
require(data.table)
dtb = data.table(y=1:10, x=10:1, z=sample(1:10), weights=1:10, thedate=1:2)
models = c("y ~ x", "y ~ z")
res = lapply(models, function(f) {dtb[,as.list(coef(lm(f, weights=weights, data=.SD))),by=thedate]})
#do more stuff with res
我想将所有这些包装成一个函数,因为它#doe more stuff
可能很长。我面临的问题是如何将事物的各种名称传递给data.table
? 例如,如何传递列名weights
?我如何通过thedate
?我设想一个看起来像这样的原型:
myfun = function(dtb, models, weights, dates)
让我明确一点:将公式传递给我的函数不是问题。如果weights
我想使用和描述日期的列名thedate
是已知的,那么我的函数可能看起来像这样:
myfun = function(dtb, models) {
res = lapply(models, function(f) {dtb[,as.list(coef(lm(f, weights=weights, data=.SD))),by=thedate]})
#do more stuff with res
}
thedate
但是,与和对应的列名weights
事先是未知的。我想将它们传递给我的函数:
#this will not work
myfun = function(dtb, models, w, d) {
res = lapply(models, function(f) {dtb[,as.list(coef(lm(f, weights=w, data=.SD))),by=d]})
#do more stuff with res
}
谢谢