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

时间:2017-09-24 15:19:00

标签: r evaluation r-mice

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)时,不会立即对其进行评估,而是在函数{{1}中进行评估。 }?如果是这样,我怎样才能阻止即时评估?

1 个答案:

答案 0 :(得分:0)

@ user20650的评论是该解决方案的线索。首先需要将公式更改为一个字符,该字符将由format实现,然后再次将其设为公式:

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