内で回帰を実行したいと思いますdata.table
。動的に構築するformula
必要があります。私は次の方法を試しました:
x = data.table(a=1:20, b=20:1, id=1:5)
> x[,as.list(coef(lm(as.formula("a ~ b")))),by=id]
Error in eval(expr, envir, enclos) : object 'a' not found
評価が行われる実際の data.table の環境をどのように指定しますか?
編集:lm(a〜b)ができることに気づきました。文字列として構築されるように、数式を動的にする必要があります。動的とは、式がpaste0(var_1, "~", var_2)
どこvar_1 = a
にある可能性があることを意味しますvar_2 = b
これは、私たちがもっとうまくできると思う解決策の1つです。
txt = parse(text="as.list(coef(lm(a ~ b)))")
> x[,eval(txt),by=id]
id (Intercept) b
1: 1 21 -1
2: 2 21 -1
3: 3 21 -1
4: 4 21 -1
5: 5 21 -1