我想在 R 中定义公式的不同部分,然后将这些部分连接起来 - 不一定只是通过将术语相加。我可以想象这样的语法:
# define one-handed formulas
part_1 <- ~ x:w
part_2 <- ~ y + z
# concatenate, e.g. with glue syntax
f <- y ~ a + {part_1}:{part_2}
对我来说,这似乎是一个自然的应用程序,所以我想知道 base R 中是否有这种功能。有些包确实提供了解决方案,但附带了其他字符串。
我在基础 R 中这样做的努力没有成功:
# does not work: update inserts "part_2" literally
update(part_1, ~ . + part_2)
#> ~part_2 + x:w
# reformulate uses + to concatenate
reformulate(c(attr(terms(part_1), "term.labels"),
attr(terms(part_2), "term.labels")))
#> ~x:w + y + z
已经编写了公式的合并方法(例如,here和here),但不允许与除加法之外的任何内容进行连接。
到目前为止,我能找到的唯一解决方案涉及来自的宏符号fixest
:
library(fixest)
setFixest_fml(..part_1 = ~ x:w)
setFixest_fml(..part_2 = ~ y + z)
f <- y ~ a + (..part_1):(..part_2)
xpd(f)
#> y ~ a + (x:w):(y + z)
attr(terms(xpd(f)), "term.labels")
#> [1] "a" "y:x:w" "x:w:z"
由reprex 包于 2021-11-18 创建(v2.0.1)