如何将工作空间中的变量传递给R中的update()

时间:2016-11-28 10:26:11

标签: r

正如标题所说,我不知道如何将变量(这是一个预测变量)传递给R中的函数update()。下面你可以找到一个最小的例子来处理。我想消除变量cyl,因为它并不重要。正如你所看到的,如果我像lm()调用一样以纯粹的名字传递,那么一切正常。但是,如果我出于某种原因需要将名称存储在某处,然后将其传递给update(),那么函数就会忽略它。

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()的不同组合等等,但似乎没有任何效果。

1 个答案:

答案 0 :(得分: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)) )