如何在modelsummary三面板回归表中跳过指定模型并显示NA/--
实现三面板表格并指定位置显示NA/“--”
可以通过modelsummary结合modify_table_body函数轻松实现这个需求,直接在生成的表格中定位目标单元格并修改内容。以下是具体步骤和代码:
方法:生成表格后修改目标单元格
- 按原代码生成结构正确的模型列表(3个面板,每个面板3个模型);
- 调用
modelsummary生成基础表格; - 使用
modify_table_body定位中间面板的第二个模型对应的系数单元格,将其替换为--或NA。
完整代码示例
library(modelsummary) library(dplyr) # 设置随机种子保证结果可重复 set.seed(123) y <- rnorm(5) # 生成原始模型列表 models <- list() for (i in 1:3) { models[[length(models) + 1]] <- lm(y ~ rnorm(5)) models[[length(models) + 1]] <- lm(y ~ rnorm(5)) models[[length(models) + 1]] <- lm(y ~ rnorm(5)) } models <- list(models[1:3], models[4:6], models[7:9]) # 生成表格并修改目标位置内容 tab <- modelsummary( models, shape = 'rbind', gof_map = c(""), coef_omit = "Intercept", estimate = "{estimate}", statistic = NULL ) %>% modify_table_body(function(x) { # 定位中间面板(section为"panel 2")的第二列(model2),替换为"--" x <- x %>% mutate(model2 = ifelse(section == "panel 2", "--", model2)) return(x) }) # 输出表格 tab
说明
modify_table_body允许直接操作表格的底层数据框,通过section列识别不同面板,model2对应每个面板的第二个模型列;- 如果需要显示
NA而非--,只需将代码中的"--"替换为NA即可; - 这种方法无需修改原始模型结构,直接在表格生成后调整,简洁高效。
内容的提问来源于stack exchange,提问作者George B. Y.
相关产品推荐
相关产品推荐

