如何在RMarkdown HTML中调整gtsummary表格列宽优化表头显示?
解决gtsummary表头换行异常问题
问题场景
在RMarkdown HTML文件中使用gtsummary包生成表格时,部分列的表头N = {n}未能像2023列那样在年份下方单行显示,期望通过调整列宽或其他方式实现统一的换行效果。
用户原始代码
theme_gtsummary_language( language = "pt", decimal.mark = ",", big.mark = ".") tab <- dados %>% select(anoobito, DESCRICAO.y) %>% tbl_summary(by = anoobito, label = c(DESCRICAO.y ~ "Causa Final")) %>% add_overall(last = T) %>% modify_table_body(fun = ~ dplyr::arrange(.x, desc(readr::parse_number(stat_0)))) %>% modify_spanning_header(c("stat_1":"stat_5") ~ "**Ano do Óbito**") %>% modify_header(label = "**Causa Final**", all_stat_cols() ~ "**{level}**<br>N = {n}") %>% bold_labels() %>% remove_row_type(type = "header") %>% modify_column_hide(columns = "stat_0") tab$table_body <- head(tab$table_body, 10) tab
解决方法
方法1:通过CSS强制设置列宽
在RMarkdown文档中添加自定义CSS,给gtsummary表格的列标题设置最小宽度,并强制按<br>标签换行:
<style> .gtsummary-table .gt_col_heading { min-width: 80px; /* 根据实际内容调整宽度值 */ white-space: pre-line; /* 强制解析换行标签 */ } </style>
方法2:用gt包的样式函数强制换行
在表格生成后,调用gt::tab_style给列标题设置换行样式,确保<br>生效:
tab <- tab %>% gt::tab_style( style = gt::cell_text(white_space = "pre-line"), locations = gt::cells_column_labels(columns = all_stat_cols()) )
补充说明
表头换行异常的核心原因是列宽不足时,浏览器会自动调整文本排版,忽略<br>的换行指令。通过设置最小列宽或强制文本换行规则,就能让N = {n}稳定显示在年份下方的单行。
内容的提问来源于stack exchange,提问作者Lana Meijinhos
相关产品推荐
相关产品推荐

