R
包mice
附带以下示例:
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}中进行评估。 }?如果是这样,我怎样才能阻止即时评估?
答案 0 :(得分:0)
@ user20650的评论是该解决方案的线索。首先需要将公式更改为一个字符,该字符将由format
实现,然后再次将其设为公式:
model_formula <- bmi~hyp+chl
fit <- with(data=imp,exp=lm(formula(format(model_formula))))