multinom() モデルを推定してから、モデル data.frame を取得しようとしています。
関数の外では、これは正常に機能します。しかし、関数内でそうしようとすると、data.frame() ステップでエラーがスローされます。
以下は、問題を切り分けるサンプル コードです。
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)
最後の行はこれを生成します:
Error in stats::model.frame(formula = fmla, data = data) :
object 'fmla' not found
traceback() を実行すると、次のようになります。
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)
これはスコーピングの問題ですか?回避策はありますか?