如何为fixest::etable()创建支持多参数的包装函数?
解决fixest::etable包装函数的报错问题
问题原因
直接通过etable(...)传递参数时,etable内部在评估headers等参数时依赖原始调用环境中的...,包装函数的...传递后无法匹配这个上下文,导致报错。
解决方案:使用do.call传递参数
通过do.call将...解析为etable的独立参数,既能传递模型(单个或列表),也能传递其他配置参数:
library(fixest) mod <- feols(mpg ~ disp, data = mtcars) mod2 <- feols(mpg ~ disp + hp, data = mtcars) my_etable <- function(...) { do.call(etable, list(...)) }
验证使用场景
- 单个模型+配置参数:
my_etable(mod, se.below = TRUE)
- 模型列表+配置参数:
my_etable(list(mod, mod2), se.below = TRUE, title = "对比两个回归模型")
- 多个模型作为独立参数传递:
my_etable(mod, mod2, digits = 3)
为什么之前的方式不行
直接将...转为列表传递给etable(etable(m))时,所有参数会被当成第一个参数(模型/模型列表)的一部分,导致配置参数被错误识别,同时无法支持多个模型作为独立参数的传递方式。而do.call会将列表中的每个元素对应到etable的各个参数位置,完全还原原始调用逻辑。
内容的提问来源于stack exchange,提问作者dufei
相关产品推荐
相关产品推荐

