J'essaie d'estimer un modèle multinom(), puis de récupérer le modèle data.frame.Comment appelez-vous model.frame() sur un objet multinom/nnet dans une fonction?
En dehors d'une fonction, cela fonctionne correctement. Mais quand j'essaie de le faire dans une fonction, l'étape data.frame() renvoie une erreur.
est un exemple de code ci-dessous qui devrait isoler le problème:
library(MASS)
library(nnet)
# create data
df <- survey
df$Exer <- relevel(df$Exer, ref="None")
# estimate within wrapper function -- throws error
estimator <- function(fmla, data){
mod1 <- multinom(fmla, data)
mod1$mod <- model.frame(mod1,data)
return(mod1)
}
x <- estimator(Exer~Sex+Smoke+Age, data=df)
La dernière ligne produit ceci:
Error in stats::model.frame(formula = fmla, data = data) :
object 'fmla' not found
Quand je lance retraçage(), je puis obtenir ceci:
6: stats::model.frame(formula = fmla, data = data)
5: eval(expr, envir, enclos)
4: eval(oc, env)
3: model.frame.multinom(mod1, data)
2: model.frame(mod1, data) at #3
1: estimator(Exer ~ Sex + Smoke + Age, data = df)
Est-ce un problème de portée? Y a-t-il des solutions de rechange?
Merci, cela fonctionne très bien. Je vais devoir lire sur les environnements pour mieux le comprendre. Si vous connaissez de bons tutoriels, ressources, etc (au-delà du code source R/documentation) s'il vous plaît faites le moi savoir. – Chris