运行 以公式作为变量的老鼠:即时评估而不是稍后评估?

Running mice with a formula as a variable: instant evaluation instead of later evaluation?

Rmice 附带以下示例:

library("mice")
imp <- mice(nhanes)
fit <- with(data=imp,exp=lm(bmi~hyp+chl))

我想要 with() 的灵​​活调用,例如:

model_formula <- bmi~hyp+chl
fit <- with(data=imp,exp=lm(model_formula))

但这会抛出 Error in eval(predvars, data, env) : object 'bmi' not found。我搜索了类似的问题。我发现的壁橱问题是 Help understand the error in a function I defined in R。 我的印象是,写 exp=lm(model_formula) 表达式 lm(model_formula) 会立即求值,但是写 exp = lm(bmi~hyp+chl) 时不会立即求值 - 相反,求值将在函数 [=20= 中进行]?如果是这样,我怎样才能阻止即时评估?

@user20650 的评论是解决方案的线索。需要先把公式改成字符,用format来实现,再改成公式:

model_formula <- bmi~hyp+chl
fit <- with(data=imp,exp=lm(formula(format(model_formula))))