如何更新条件公式?

cof*_*nky 2 r formula

让我跳到示例中.考虑以下等式:

 frml <- formula(y ~ a + b | x + z )
Run Code Online (Sandbox Code Playgroud)

这样的配方规范例如用于AER::ivreg.

我想更新这个公式,以便它读取

 frml2 <- y ~ a + b + c | x + z + w
Run Code Online (Sandbox Code Playgroud)

但是,我不确定如何分别更新条件符号前后的部分|.例如,

 frml2 <- update.formula(frml, . ~ . + c | . + w)
Run Code Online (Sandbox Code Playgroud)

 y ~ ((a + b | x + z) + c | (a + b | x + z) + w)
Run Code Online (Sandbox Code Playgroud)

这不是我想要的.问题是.指右侧(或左侧)的整个公式,包括条件.有谁知道我如何相应地更新公式?

一种方法似乎是将公式转换为字符向量,将向量拆分为|,添加我想要添加的内容,并将公式重新组合在一起.虽然这很容易,但我觉得必须有一种更简单的方法.我当然不是第一个处理这类问题的人.任何建议/提示/评论将不胜感激!

mle*_*gge 6

如果您不能使用包,则无法确定您的问题,因为该Formula包具有此功能.IT类的对象既formulaFormula:

> library(Formula)
> frml <- Formula(y ~ a + b | x + z )
> update(frml, . ~ . + c | . + w)
y ~ a + b + c | x + z + w
> class(frml)
[1] "Formula" "formula"
Run Code Online (Sandbox Code Playgroud)