在R中的update()中使用变量来更新公式

时间:2016-08-16 16:31:31

标签: r

我正在尝试将术语添加到R中的模型公式。如果我直接在更新函数中输入变量名,则可以直接使用update()。但是,如果变量名称在变量中,则它不起作用。

myFormula <- as.formula(y ~ x1 + x2 + x3)
addTerm <- 'x4'

#Works: x4 is added
update(myFormula, ~ . + x4)
Output: y ~ x1 + x2 + x3 + x4

#Does not work: "+ addTerm" is added instead of x4 being removed
update(myFormula, ~ . + addTerm)
Output: y ~ x1 + x2 + x3 + addTerm

通过变量添加x4可以稍微复杂一点的方式完成。

formulaString <- deparse(myFormula)
newFormula <- as.formula(paste(formulaString, "+", addTerm))
update(newFormula, ~.)
Output: y ~ x1 + x2 + x3 + x4

有没有办法让update()直接执行此操作而无需这些额外的步骤?我尝试过粘贴,解析和其他常用功能,但它们无法正常工作。

例如,如果使用paste0,则输出为

update(myFormula, ~ . + paste0(addTerm))
Output: y ~ x1 + x2 + x3 + paste0(addTerm)

有人对如何在update()中使用变量有任何建议吗?

由于

1 个答案:

答案 0 :(得分:8)

您可以这样做:

update(myFormula, paste("~ . +",addTerm))