将公式作为变量运行鼠标:即时评估而不是稍后评估?
问题描述:
的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)
它不是直接评估 - 反而会在功能with.mice()
?如果是这样,我该如何防止即时评估?
答
@ user20650的评论是解决方案的线索。这是需要先更改公式为一个字符,这将是format
来实现,并使其再次公式:
model_formula <- bmi~hyp+chl
fit <- with(data=imp,exp=lm(formula(format(model_formula))))
+0
你知道什么与你的工作流程保持一致,但将你的模型定义为一个公式,将其转换成一个字符,然后回到一个公式,看起来并不是最理想的。 ps一些答案[这里](https://*.com/questions/14671172/how-to-convert-r-formula-to-text)以这种方式使用'format'显示问题。 – user20650
我觉得可能是一个范围问题,而不是评价的时候,由于如何写入.mids。或者,您可以将公式定义为字符串'model_formula user20650