如何在modelsummary中分离因子变量名与因子水平?
通用解决方案:给modelsummary输出的因子变量名添加下划线分隔水平值
可以通过modelsummary的coef_rename参数结合正则表达式实现通用处理,无需手动指定每个变量:
- 定义一个通用重命名函数,用正则匹配并替换因子变量的命名格式:
library(modelsummary) rename_factors <- function(x) { # 匹配factor(xxx)后接数字的模式,在括号与数字间插入下划线 gsub("(factor\\([^)]+\\))(\\d+)", "\\1_\\2", x) }
- 拟合模型并调用
modelsummary时传入该函数:
# 单因子变量示例 mod <- lm(mpg ~ factor(cyl), mtcars) modelsummary(mod, coef_rename = rename_factors)
运行后,原输出中的factor(cyl)6、factor(cyl)8会自动变为factor(cyl)_6、factor(cyl)_8。
多因子变量验证
这个方案对所有符合factor(变量名)水平值格式的项都生效,比如同时包含多个因子变量的模型:
mod2 <- lm(mpg ~ factor(cyl) + factor(gear), mtcars) modelsummary(mod2, coef_rename = rename_factors)
输出里的factor(gear)4、factor(gear)5会被替换为factor(gear)_4、factor(gear)_5。
内容的提问来源于stack exchange,提问作者robertspierre
相关产品推荐
相关产品推荐

