让我直接进入示例。考虑以下等式:
frml <- formula(y ~ a + b | x + z )
使用这样的公式规范,例如使用 AER::ivreg
.
我想更新这个公式,使其变为
frml2 <- y ~ a + b + c | x + z + w
但是,我不确定如何分别更新条件符号 |
之前和之后的部分。例如,
frml2 <- update.formula(frml, . ~ . + c | . + w)
给了
y ~ ((a + b | x + z) + c | (a + b | x + z) + w)
这不是我想要的。问题是 .
指的是右侧(或左侧)的整个公式,包括条件。有谁知道如何相应地更新公式?
一种方法似乎是将公式转换为字符向量,在 |
处拆分向量,添加我想要添加的任何内容,然后将公式重新组合在一起。虽然这很容易,但不知何故,我觉得必须有一种更简单的方法来做到这一点。我肯定不是第一个处理这类问题的人。任何建议/提示/评论将不胜感激!
最佳答案
如果您不能使用包,则无法从您的问题中确定,因为 Formula
包具有专门用于此的功能。它将其对象分类为 formula
和 Formula
:
> 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"
关于r - 如何更新条件公式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28330966/