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

如何为gtsummary::tbl_regression配置科学计数法格式p值

gtsummary::tbl_regression 自定义p值显示规则方案

完全可以通过自定义p值格式化函数实现你需要的显示规则,具体操作如下:

1. 自定义p值格式化函数

首先编写符合你需求的格式化函数,逻辑为:p值小于0.001时用科学计数法展示2位尾数,大于等于0.001时保留3位小数:

format_p_custom <- function(p) {
  dplyr::if_else(
    p < 0.001,
    formatC(p, format = "e", digits = 2, trim = TRUE), # 科学计数法输出,尾数保留2位小数,去除多余空格
    formatC(p, format = "f", digits = 3, trim = TRUE)  # 固定小数位输出,保留3位小数,去除多余空格
  )
}

2. 单表调用配置

只需要在tbl_regression()中传入pvalue_fun参数指定自定义函数即可,完整示例代码如下:

# 加载依赖包
library(gtsummary)
library(tidyverse)
theme_gtsummary_compact()

# 自定义p值格式化函数
format_p_custom <- function(p) {
  dplyr::if_else(
    p < 0.001,
    formatC(p, format = "e", digits = 2, trim = TRUE),
    formatC(p, format = "f", digits = 3, trim = TRUE)
  )
}

# 构建线性模型 
mod1 <- lm(mpg ~ cyl + gear, data = mtcars %>% dplyr::mutate(cyl = factor(cyl)))

# 生成回归表,指定p值格式化规则
tbl_regression(
  mod1,
  pvalue_fun = format_p_custom
)

运行后输出的回归表p值就会符合你的预期:cyl 6对应2.06e-04、cyl 8对应5.76e-08、gear对应0.422。

3. 全局生效配置

如果你需要所有gtsummary生成的表格都默认使用该p值规则,可以直接在主题中设置,无需每次调用传参:

# 设置全局主题,默认使用自定义p值格式
theme_gtsummary_compact(
  pvalue_fun = format_p_custom
)

# 后续生成所有回归表都会自动应用规则
tbl_regression(mod1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 00:06:05