2016-11-28 59 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)))