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

无需RMarkdown,如何生成netmeta分析结果的可复制汇总表格?

网状Meta分析结果导出到Word的问题与解决办法

1. RMarkdown编译LaTeX报错:multirow.sty缺失

编译时出现以下错误:

C:\Users\estua\AppData\Roaming\TinyTeX\texmf-dist\scripts\texlive\tlmgr.pl: Maybe the repository setting should be changed.
C:\Users\estua\AppData\Roaming\TinyTeX\texmf-dist\scripts\texlive\tlmgr.pl: More info: https://tug.org/texlive/acquire.html
! LaTeX Error: File `multirow.sty' not found.

! Emergency stop.
<read *> 

Error: LaTeX failed to compile RMarkdown.tex. See https://yihui.org/tinytex/r/#debugging for debugging tips. See RMarkdown.log for more info.
Execution halted

解决办法

multirow.sty属于LaTeX的multirow包,直接用TinyTeX命令安装:

tinytex::tlmgr_install("multirow")

如果安装失败,尝试重装TinyTeX以确保依赖完整:

tinytex::uninstall_tinytex()
tinytex::install_tinytex()

2. 无法导出summary(df.netmeta)的汇总结果

stargazer、modelsummary等工具仅识别常规数据框,而netmeta的summary()输出是自定义格式结果,需要手动提取核心元素后再生成表格。

解决步骤

(1)提取核心结果到数据框

从netmeta对象中提取治疗效应、异质性检验等关键数据:

# 提取随机效应模型的治疗估计结果
treat_est <- as.data.frame(df.netmeta$random[, c("TE", "lower", "upper", "z", "pval")])
# 添加预测区间结果
treat_est$PI_lower <- df.netmeta$prediction$lower
treat_est$PI_upper <- df.netmeta$prediction$upper
# 重命名列名
colnames(treat_est) <- c("MD", "95%-CI下限", "95%-CI上限", "z值", "p值", "95%-PI下限", "95%-PI上限")
# 添加治疗名称
treat_est <- cbind(治疗 = rownames(treat_est), treat_est)
# 格式化CI和PI为区间格式
treat_est$`95%-CI` <- paste0("[", round(treat_est$`95%-CI下限`,4), "; ", round(treat_est$`95%-CI上限`,4), "]")
treat_est$`95%-PI` <- paste0("[", round(treat_est$`95%-PI下限`,4), "; ", round(treat_est$`95%-PI上限`,4), "]")
# 保留需要的列
treat_est_final <- treat_est[, c("治疗", "MD", "95%-CI", "z值", "p值", "95%-PI")]

# 提取异质性统计结果
heterogeneity <- data.frame(
  指标 = c("tau²", "tau", "I²"),
  数值 = c(
    round(df.netmeta$tau2,4),
    round(df.netmeta$tau,4),
    paste0(round(df.netmeta$I2,1), "% [", round(df.netmeta$lower.I2,1), "%; ", round(df.netmeta$upper.I2,1), "%]")
  )
)

# 提取异质性与不一致性检验结果
q_test <- as.data.frame(df.netmeta$Q[, c("Q", "df", "pval")])
q_test <- cbind(检验类型 = rownames(q_test), q_test)
colnames(q_test) <- c("检验类型", "Q值", "自由度", "p值")

(2)用gt生成美观表格并导出

使用gt包生成可直接复制到Word的表格:

library(gt)

# 治疗效应表格
gt_treat <- gt(treat_est_final) %>%
  fmt_number(columns = c(MD, z值, p值), decimals = 4) %>%
  tab_header(title = "治疗效应估计(随机效应模型,对比:其他治疗 vs None)")

# 异质性统计表格
gt_hetero <- gt(heterogeneity) %>%
  tab_header(title = "异质性/不一致性量化")

# Q检验表格
gt_qtest <- gt(q_test) %>%
  fmt_number(columns = c(Q值, p值), decimals = 4) %>%
  tab_header(title = "异质性(研究内)与不一致性(研究间)检验")

# 合并表格(可选)
gt_final <- gt_treat %>%
  tab_source_note(source_note = paste0("成对比较数:m = ", df.netmeta$m, ";治疗数:n = ", df.netmeta$k, ";设计数:d = ", df.netmeta$d)) %>%
  gt::tab_row_group(group = "异质性分析", gt_hetero) %>%
  gt::tab_row_group(group = "检验结果", gt_qtest)

# 导出为HTML,可直接复制到Word
gt::gtsave(gt_final, "netmeta_summary.html")

可复现代码

library('netmeta')
studlab <- c("Cardoso", "Baltazar", "Rossi", "Rossi", "Rossi", "Idrissi")
n.e <- c(6, 15, 8, 8, 7, 10)
mean.e <- c(25.52, 16.10, 23.44, 23.44, 23.44, 33.70)
sd.e <- c(2.68, 5.81, 3.6, 3.6, 3.98, 10.44)
n.c <- c(6, 15, 7, 7, 7, 12)
mean.c <- c(31.14, 16.8, 23.53, 19.18, 19.18, 32.9)
sd.c <- c(1.97, 5.03, 3.98, 5.11, 5.11, 9.7)
TE <- c(-5.62, -0.7, -0.09, 4.26, 4.35, 0.8)
seTE <- c(1.35, 1.98, 1.97, 2.31, 2.45, 4.32)
treat1 <- c("ALA", "LA", "LA", "LA", "ALA", "LA")
treat2 <- c("None", "None", "ALA", "None", "None", "ALA")
df <- data.frame(studlab, n.e, mean.e, sd.e, n.c, 
                 mean.c, sd.c, TE, seTE, treat1, treat2)
df.netmeta <- netmeta(TE = TE,
        seTE = seTE,
        treat1 = treat1,
        treat2 = treat2,
        studlab = studlab,
        data = df,
        sm = "MD",
        fixed = FALSE,
        random = TRUE,
        prediction = TRUE,
        reference.group = "None",
        details.chkmultiarm = TRUE,
        sep.trts = " vs ")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 04:27:01