これは私がやりたいことの非常にトリミングされたバージョンです。コードが長すぎると複雑なので、私は正確な問題を貼り付けることができませんが、これは問題の根本にあると思います。この質問へのジョシュの答えのおかげでHow do you code an R function so that it 'knows' to look in 'data' for the variables in other arguments?私はそこに途中です。どのように関数内の 'formula'型のオブジェクトに(ベクトル名など)を追加できますか?
example <- function(model, xvar3=NULL, xvar4=NULL, data){
print(class(model))
#xvar3 <- eval(substitute(xvar3), envir=data, enclos=parent.frame())
#xvar4 <- eval(substitute(xvar4), envir=data, enclos=parent.frame())
print(class(xvar3))
xvar5 <- xvar4^2
mod <- glm(model + xvar3 + xvar5, data=data)
return(mod)
}
example(mpg ~ cyl, hp, wt, data=mtcars)
これは失敗します。コメントを削除すると(前の質問の助けに基づいて)、hpとwtを見つけることの問題を解決します。 'model'はクラス式で、glmが動くように 'mpg〜cyl + xvar3 + xvar5'になりたいです。しかし、私は数式にそれらを追加することができないようです。
私は '呼び出し'クラス、さらには 'eval'、 'as.formula'のバリエーションを 'paste'や 'noquote'などで取り組んできましたが、固執することはありません。
起動時に 'update'を使うだけでいいです.... –
おかげで、最初の遊びでは、「単語」xvar3が正しく表示されずデータの実際のベクトルが印刷されています。それはおそらく非常に貧弱です。 – nzcoops
重要なのは、モデルに用語を追加することです。それが 'update'の目的です。基本的に、あなたは車輪を再発明しているようです。 –