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
}
ありがとう