2016-11-28 6 views
0

タイトルでは、予測子である変数をRの関数update()に渡す方法がわかりません。作業する最小の例。変数cylを削除したいのですが、重要ではないためです。あなたが見る通り、私がlm()呼び出しで行うような純粋な名前として渡すと、すべてが機能します。しかし、何らかの理由で名前をどこかに格納してからupdate()に渡す必要がある場合、関数はそれを単に無視します。ワークスペース内の変数をupdate()に渡す方法R

MODEL1は完全なモデルである:

model1 = lm(hp ~ qsec + cyl + mpg, data = mtcars) 
summary(model1) 

MODEL2はmodel2_notworkingが、私は問題はであると思い働いていない縮小モデル

var_to_delete = "cyl" 
model2_notworking = update(model1, . ~ . - var_to_delete) 
summary(model2_notworking) 

で働い縮小モデル

model2 = update(model1, . ~ . - cyl) 
summary(model2) 

です私は名前を格納する方法。私はeval()noquote()name()などの異なる組み合わせで試しましたが、何も動作しないようです。

+0

あなたのコードは正常に動作します。 「model2_notworkingは、動作していない縮小モデルですか?」とはどういう意味ですか? –

答えて

0

コードでは、式hp ~ qsec + cyl + mpg - var_to_deleteが生成されます。代わりに、変数名を渡すことで式を更新する必要があります。このように

fit <- lm(hp ~ qsec + cyl + mpg, data = mtcars) 

update(fit, . ~ . - mpg) 

var_to_delete <- "mpg" 
update(fit, as.formula(paste0(". ~ . - ", var_to_delete))) 
関連する問題