2016-11-28 58 views
0

如標題所示,我不知道如何將變量(預測變量)傳遞給R中的函數update()。下面您可以找到最小的例子來工作。我想消除變量cyl,因爲它不重要。正如你所看到的,如果我像我們在lm()調用中那樣通過一個純粹的名字,那麼一切都是有效的。但是,如果我需要在某處存儲名稱,然後將其傳遞到update(),那麼該函數就會忽略它。如何在工作區中傳遞變量以更新()R

MODEL1是完整的模型:

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

MODEL2是工作簡化模型

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

model2_notworking是不工作簡化模型

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

我認爲這個問題是在我存儲名稱的方式。我嘗試了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)))