【发布时间】:2018-03-18 20:20:42
【问题描述】:
对于长且重复的模型,我想创建一个包含模型公式的回归量的“宏”(在 Stata 中称为,并通过 global var1 var2 ... 完成)。
例如来自
library(car)
lm(income ~ education + prestige, data = Duncan)
我想要类似的东西:
regressors <- c("education", "prestige")
lm(income ~ @regressors, data = Duncan)
我可以找到this approach。但是我在回归器上的应用程序不起作用:
reg = lm(income ~ bquote(y ~ .(regressors)), data = Duncan)
因为它把我扔了:
Error in model.frame.default(formula = y ~ bquote(.y ~ (regressors)), data =
Duncan, : invalid type (language) for variable 'bquote(.y ~ (regressors))'
即使是同一问题的公认答案:
lm(formula(paste('var ~ ', regressors)), data = Duncan)
打击并展示给我:
Error in model.frame.default(formula = formula(paste("var ~ ", regressors)),
: object is not a matrix`.
当然我试过as.matrix(regressors) :)
那么,我还能做什么?
【问题讨论】:
-
只需在该问题上使用其他答案。我不确定 bquote 适应可变数量的协变量有多容易。
-
@joran:也没有用,我在我的问题中说明了错误消息,现在我也做了一些更可重复的操作。
-
下面有几个演示我提到的答案是如何工作的。不要那么轻易放弃! ;)
-
顺便说一句,因为我们不应该称它为“宏”,我们如何在 R 中调用它?
-
FWIW,使用像这样的
global来保存变量名称在 Stata 社区中被广泛认为是不好的风格。在需要知道的基础上,有许多更好的方法可以在程序或命令或其他代码块之间传递名称列表。
标签: r stata substitution lm stata-macros