正如标题所说,我不知道如何将变量(这是一个预测变量)传递给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()
的不同组合等等,但似乎没有任何效果。
答案 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)) )