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

Qas*_*wed 6 evaluation r r-mice

R软件包mice附带以下示例:

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

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

model_formula <- bmi~hyp+chl
fit <- with(data=imp,exp=lm(model_formula))
Run Code Online (Sandbox Code Playgroud)

但这会抛出Error in eval(predvars, data, env) : object 'bmi' not found. 我搜索了类似的问题。我发现的最隐蔽的问题是帮助理解我在 R 中定义的函数中的错误。我的印象是,编写exp=lm(model_formula)表达式lm(model_formula)会立即求值,但是编写表达式时exp = lm(bmi~hyp+chl)不会立即求值 - 相反,求值将在函数中进行with.mice()?如果是这样,我怎样才能防止即时评估?

Qas*_*wed 3

@user20650 的评论是解决方案的线索。需要先将公式改为字符,通过 来实现format,然后再次将其变为公式:

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