gtsummary的tbl_regression中multinom模型标签格式设置失效如何解决?
解决gtsummary中multinom模型标签无法用bold_labels/italicize_labels格式化的问题
问题复现
以下代码可重现问题:glm二分类模型的标签能正常应用粗体+斜体,但multinom多分类模型的标签无变化。
# 加载依赖包 library(gtsummary) library(nnet) library(tidyverse) # 生成模拟数据 set.seed(123) df <- tibble( y = factor(sample(c("A", "B", "C"), 100, replace = TRUE)), x1 = rnorm(100), x2 = factor(sample(c("Yes", "No"), 100, replace = TRUE)) ) # glm模型:标签格式生效 glm_model <- glm(y == "B" ~ x1 + x2, data = df, family = binomial) tbl_glm <- tbl_regression(glm_model, exponentiate = TRUE) %>% bold_labels() %>% italicize_labels() tbl_glm # multinom模型:标签格式不生效 multinom_model <- multinom(y ~ x1 + x2, data = df, trace = FALSE) tbl_multinom <- tbl_regression(multinom_model, exponentiate = TRUE) %>% bold_labels() %>% italicize_labels() tbl_multinom
问题原因
bold_labels()和italicize_labels()默认仅适配二分类glm这类结构简单的模型标签,multinom多分类模型的表格会按分类水平生成行组,标签单元格的匹配规则未被默认函数覆盖,导致样式不生效。
解决方案
方法1:用modify_table_styling指定样式
直接定位标签行,手动设置粗体+斜体样式:
tbl_multinom_fixed <- tbl_regression(multinom_model, exponentiate = TRUE) %>% modify_table_styling( columns = label, rows = row_type == "label", text_format = c("bold", "italic") )
方法2:通过Markdown语法手动格式化
利用gt::md()解析粗斜体Markdown语法(***包裹文本):
tbl_multinom_fixed2 <- tbl_regression(multinom_model, exponentiate = TRUE) %>% modify_fmt_fun( columns = label, rows = row_type == "label", fmt_fun = function(x) gt::md(paste0("***", x, "***")) )
两种方法都能实现变量标签的粗体+斜体效果,和glm模型的样式一致。
内容的提问来源于stack exchange,提问作者Chris_S
相关产品推荐
相关产品推荐

