【发布时间】:2013-01-24 21:30:53
【问题描述】:
我想在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
这是我认为我们可以做得更好的一种解决方案:
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
【问题讨论】:
-
我认为这只是 stackoverflow.com/questions/14721592/… 的副本。尚未投票结束,因为我认为您需要更好地解释和说明“动态构建”的含义。
-
将通读,没看到那个,但我不认为它是重复的。特别是如何在实际 data.table 中处理环境?
标签: r environment data.table