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

问题描述:

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)它不是直接评估 - 反而会在功能with.mice()?如果是这样,我该如何防止即时评估?

+1

我觉得可能是一个范围问题,而不是评价的时候,由于如何写入.mids。或者,您可以将公式定义为字符串'model_formula user20650

@ 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