运行 以公式作为变量的老鼠:即时评估而不是稍后评估?
Running mice with a formula as a variable: instant evaluation instead of later evaluation?
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)
时不会立即求值 - 相反,求值将在函数 [=20= 中进行]?如果是这样,我怎样才能阻止即时评估?
@user20650 的评论是解决方案的线索。需要先把公式改成字符,用format
来实现,再改成公式:
model_formula <- bmi~hyp+chl
fit <- with(data=imp,exp=lm(formula(format(model_formula))))
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)
时不会立即求值 - 相反,求值将在函数 [=20= 中进行]?如果是这样,我怎样才能阻止即时评估?
@user20650 的评论是解决方案的线索。需要先把公式改成字符,用format
来实现,再改成公式:
model_formula <- bmi~hyp+chl
fit <- with(data=imp,exp=lm(formula(format(model_formula))))