【发布时间】:2016-07-30 04:07:38
【问题描述】:
我正在使用 R 中的 mice 包对一些缺失的数据进行乘法插补。我需要能够指定传递给函数内部with(df, glm(y ~ x)) 构造的公式。这个with() 构造是mice 包使用的格式,用于在每个估算数据集内分别拟合回归模型。
但是,我无法弄清楚阻止我成功将公式作为参数传递的范围问题。这是一个可重现的示例:
library(mice)
data(mtcars)
mtcars[5, 5] <- NA # introduce a missing value to be imputed
mtcars.imp = mice(mtcars, m = 5)
# works correctly outside of function
with(mtcars.imp, glm(mpg ~ cyl))
fit_model_mi = function(formula) {
with(mtcars.imp, glm(formula))
}
# doesn't work when trying to pass formula into function
fit_model_mi("mpg ~ cyl")
另请参阅here 以了解在 R 帮助上提出的相同问题,尽管它没有收到答案。
【问题讨论】:
-
"mpg ~ cyl"不是公式对象。它只是一个字符值 此外,with函数只能在控制台级别安全使用。特别建议不要在函数内部使用它。