tabletext 矩阵中 R 上标中的 Forestplot

Forestplot in R superscript in tabletext matrix

我正在用 R 创建一个森林图。由于我无法显示我自己的数据,所以我使用的是我在此处找到的示例代码和数据 https://cran.r-project.org/web/packages/forestplot/vignettes/forestplot.html

cochrane_from_rmeta <- 
structure(list(
mean  = c(NA, NA, 0.578, 0.165, 0.246, 0.700, 0.348, 0.139, 1.017, NA, 0.531), 
lower = c(NA, NA, 0.372, 0.018, 0.072, 0.333, 0.083, 0.016, 0.365, NA, 0.386),
upper = c(NA, NA, 0.898, 1.517, 0.833, 1.474, 1.455, 1.209, 2.831, NA, 0.731)),
.Names = c("mean", "lower", "upper"), 
row.names = c(NA, -11L), 
class = "data.frame")


tabletext<-cbind(
c("", "Study", "Auckland", "Block", 
"Doran", "Gamsu", "Morrison", "Papageorgiou", 
"Tauesch", NA, "Summary"),
c("Deaths", "(steroid)", "36", "1", 
"4", "14", "3", "1", 
"8", NA, NA),
c("Deaths", "(placebo)", "60", "5", 
"11", "20", "7", "7", 
"10", NA, NA),
c("", "OR", "0.58", "0.16", 
"0.25", "0.70", "0.35", "0.14", 
"1.02", NA, "0.53"),
c("",NA,NA,NA,NA,NA,NA,NA,NA,NA,"Heterogeniety I^2 = 20%"))[enter image description here][1]


library(forestplot)
 forestplot(tabletext, 
       cochrane_from_rmeta,new_page = TRUE,
       is.summary=c(TRUE,TRUE,rep(FALSE,8),TRUE),
       clip=c(0.1,2.5), 
       xlog=TRUE, 
       col=fpColors(box="royalblue",line="darkblue", summary="royalblue"))

我想为异质性的最后一个标签加上上标。我尝试了 expression(Heterogeniety~I^2),但我收到以下错误消息:

cbind(c("Outcome", "Death or BPD", NA, NA, NA, "Interaction p value = .xx" 出错: 无法从类型 'expression'[=12 创建矩阵=]

如何在我的森林图中添加上标?

R 不允许您创建表达式矩阵。 forestplot

的文档中也提到了

You can also provide a matrix although this cannot have expressions by design

幸运的是,forestplot 的文档还提到它可以接受 labeltext 的列表。

The list should be wrapped in m x n number to resemble a matrix: list(list("rowname 1 col 1", "rowname 2 col 1"), list("r1c2", expression(beta))

因此,您可能希望将 tabletext 转换为嵌套列表,如下所示:

tabletext <- list(
    list("", "Study", "Auckland", "Block", 
        "Doran", "Gamsu", "Morrison", "Papageorgiou", 
        "Tauesch", NA, "Summary"),
    list("Deaths", "(steroid)", "36", "1", 
        "4", "14", "3", "1", 
        "8", NA, NA),
    list("Deaths", "(placebo)", "60", "5", 
        "11", "20", "7", "7", 
        "10", NA, NA),
    list("", "OR", "0.58", "0.16", 
        "0.25", "0.70", "0.35", "0.14", 
        "1.02", NA, "0.53"),
    list("",NA,NA,NA,NA,NA,NA,NA,NA,NA, expression(Heterogeniety~I^2==20~'%')))


forestplot(tabletext, 
    cochrane_from_rmeta,new_page = TRUE,
    is.summary=c(TRUE,TRUE,rep(FALSE,8),TRUE),
    clip=c(0.1,2.5), 
    xlog=TRUE, 
    col=fpColors(box="royalblue",line="darkblue", summary="royalblue"))

HTH.