R语言中实现公式拼接的最标准方法是什么?
我想要在R中定义公式的不同组成部分,再将这些部分拼接起来——并非仅通过项的加和实现。我理想中的语法大致如下:
# 定义单侧公式 part_1 <- ~ x:w part_2 <- ~ y + z # 拼接,比如用类似glue的语法 f <- y ~ a + {part_1}:{part_2}
对我而言这是很自然的使用场景,因此想了解基础R中是否存在这类功能。部分包虽提供相关解决方案,但会附带额外限制。
我在基础R中的尝试均未成功:
# 无法正常运行:update会直接字面插入"part_2" update(part_1, ~ . + part_2) #> ~part_2 + x:w # reformulate只能用+拼接项 reformulate(c(attr(terms(part_1), "term.labels"), attr(terms(part_2), "term.labels"))) #> ~x:w + y + z
目前已有一些公式合并方法,但仅支持加和操作,不支持其他运算符拼接。
目前我找到的唯一可行方案需要使用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"
于2021-11-18由reprex包(v2.0.1)创建
内容的提问来源于stack exchange,提问作者dufei
相关产品推荐
相关产品推荐

