You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将函数传入gtsummary的label参数批量处理表格标签?

gtsummary表格标签批量格式化的简便实现方法

现有操作方式

1. 手动修改标签

先生成基础表格:

library(gtsummary)
table1 <- trial %>%
  tbl_summary()    

随后手动修改内部标签字段:

table1[["table_body"]][["label"]] <- 
  table1[["table_body"]][["label"]] %>% 
  str_to_title()

2. 封装为自定义函数

将标签格式化逻辑封装为复用函数:

clean_tbl_labels <- function(tbl) {
  tbl[["table_body"]][["label"]] <- 
    tbl[["table_body"]][["label"]] %>% 
    gsub("_", " ", .) %>% 
    str_to_title()
  tbl
}

疑问

是否可以直接在tbl_summary()的label参数中传入函数,实现批量格式化标签?比如类似如下思路:

table1 <- 
  trial %>%
  tbl_summary(label = list(.x ~ str_to_title()))

简便实现方案

gtsummary支持通过选择器+公式语法在label参数中批量处理标签,也提供了官方推荐的表格修改函数,以下是几种可行方法:

方法1:在tbl_summary()的label参数中批量处理

使用everything()选择所有变量,通过公式嵌套函数完成格式化:

library(gtsummary)
library(stringr)

table1 <- trial %>%
  tbl_summary(
    label = list(everything() ~ ~str_to_title(gsub("_", " ", .x)))
  )
  • everything():匹配所有变量
  • .x:代表变量的原始标签文本
  • 先通过gsub("_", " ", .x)替换下划线为空格,再用str_to_title()转为标题格式

如果需要对不同类型变量分别处理,可结合all_continuous()/all_categorical()选择器:

table1 <- trial %>%
  tbl_summary(
    label = list(
      all_continuous() ~ ~str_to_title(.x),
      all_categorical() ~ ~str_to_title(gsub("_", " ", .x))
    )
  )

方法2:使用官方推荐的modify_table_body()函数

gtsummary提供了modify_table_body()函数用于安全修改表格内容,避免直接访问内部列表结构(结构可能随版本更新变化):

table1 <- trial %>%
  tbl_summary() %>%
  modify_table_body(
    ~ .x %>%
      mutate(label = str_to_title(gsub("_", " ", label)))
  )

这种写法更符合gtsummary的设计规范,代码可读性和稳定性更强。


内容的提问来源于stack exchange,提问作者Brian Brummer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 10:55:22