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

R脚本for循环中gtsummary::tbl_regression输出未渲染至rmarkdown生成的Word文档

问题原因

gtsummary生成的tbl_regression对象默认print方法仅输出控制台纯文本格式,即便设置results='asis',knitr也无法将该格式解析为Word可识别的结构化表格。

解决方案

修改步骤

  1. 新增加载flextable、knitr依赖包,flextable是gtsummary适配Word输出的核心组件
  2. 优化模型公式写法,避免get()可能出现的环境变量调用异常
  3. 循环内输出表格时,先将tbl_regression对象转为flextable格式,再通过knit_print()输出
  4. 表格输出后追加空行,避免多个表格格式粘连

修正后代码

Script 1

library(gtsummary)  # 格式化模型输出
library(flextable)  # 适配Word表格渲染
library(knitr)      # 处理knitr输出逻辑

#' # 示例数据集
dataset = as.data.frame(cbind(Y1 = c(rep(0,10), rep(1,10)),
                        Y2 = c(rep(0,5), rep(1,10), rep(0,5)),
                        X = rnorm(20, 0, 1)))
  
#' # 循环生成格式化输出
#+ Table1, results = 'asis'
for(i in c("Y1", "Y2")){
  fit = glm(reformulate("X", response = i),
             family = binomial,
             data = dataset)
  
  print(length(fit$residuals))
  
  fit2 = fit %>%  
    tbl_regression(
      exponentiate = TRUE, 
      conf.level = 0.999,
      pvalue_fun = ~style_pvalue(.x, digits = 3),
    ) %>% 
    bold_p(t = 0.01) %>%
    bold_labels() %>%
    italicize_levels() 

  # 转flextable后输出
  fit2 %>% 
    as_flex_table() %>% 
    knit_print()
  # 追加空行分隔表格
  cat("\n\n")
}

Script 2 无需修改,直接运行即可输出带表格的Word文档

#' # 输出Word文档
rmarkdown::render('C:\\Users ... Test.R',
                  output_format = "word_document",
                  output_dir = "C:\\Users ...")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 14:06:00