Le paquet R
mice
est livré avec exemple suivant:Exécution de souris avec une formule comme variable: évaluation instantanée au lieu d'une évaluation ultérieure?
library("mice")
imp <- mice(nhanes)
fit <- with(data=imp,exp=lm(bmi~hyp+chl))
Je veux un appel flexible de with()
comme:
model_formula <- bmi~hyp+chl
fit <- with(data=imp,exp=lm(model_formula))
Mais cela jette Error in eval(predvars, data, env) : object 'bmi' not found
. J'ai cherché des problèmes similaires. Le problème de placard que j'ai trouvé était Help understand the error in a function I defined in R. Mon impression est, que l'écriture exp=lm(model_formula)
l'expression lm(model_formula)
est évaluée immédiatement, mais lors de l'écriture exp = lm(bmi~hyp+chl)
il n'est pas évalué tout de suite - au lieu de la eavuation aura lieu dans la fonction with.mice()
? Et si oui, comment puis-je empêcher une évaluation instantanée?
Je pense que cela est probablement un problème de cadrage, plutôt que le temps de l'évaluation, en raison de comment with.mids est écrit. Comme alternative, vous pouvez définir la formule comme une chaîne, 'model_formula <-" bmi ~ hyp + chl "', puis définir la formule dans la portée with.mids 'avec (imp, lm (formule (model_formula))) ' – user20650