1

我使用 R table1 创建了一个表,并希望将其保存为具有一行代码的 png 图像,而不是使用 R GUI 界面中的导出按钮。我需要这个,以便我可以使用 papaja 包将表格上传到 Rmarkdown,该包不能正确加载和编织 HTML 表格。我在这里看了看:R: table1 output,但它并没有解决我的问题。我也尝试使用 htmlwidgetes 和 webshot,但没有成功。任何建议表示赞赏。

4

1 回答 1

0

如果你想将table1包创建的表包含到一个papaja文档中,其实有一个简单的解决方案。考虑table1文档中的示例:

dat <- subset(survival::pbc, !is.na(trt))  # Exclude subjects not randomized

dat$trt     <- factor(dat$trt, levels=1:2, labels=c("D-penicillamine", "Placebo"))
dat$sex     <- factor(dat$sex, levels=c("m", "f"), labels=c("Male", "Female"))
dat$stage   <- factor(dat$stage, levels=1:4, labels=paste("Stage", 1:4))
dat$edema   <- factor(dat$edema, levels=c(0, 0.5, 1),
                      labels=c("No edema",
                               "Untreated or successfully treated",
                               "Edema despite diuretic therapy"))
dat$spiders <- as.logical(dat$spiders)
dat$hepato  <- as.logical(dat$hepato)
dat$ascites <- as.logical(dat$ascites)

label(dat$age)      <- "Age (y)"
label(dat$sex)      <- "Sex"
label(dat$stage)    <- "Histologic stage of disease"
label(dat$edema)    <- "Edema status"
label(dat$spiders)  <- "Blood vessel malformations in the skin"
label(dat$hepato)   <- "Presence of hepatomegaly or enlarged liver"
label(dat$ascites)  <- "Presence of ascites"
label(dat$platelet) <- "Platelet count (billions per liter)"
label(dat$protime)  <- "Standardised blood clotting time"
label(dat$albumin)  <- "Serum albumin (g/dL)"
label(dat$alk.phos) <- "Alkaline phosphotase (U/L)"
label(dat$ast)      <- "Aspartate aminotransferase (U/mL)"
label(dat$bili)     <- "Serum bilirubin (mg/dL)"
label(dat$chol)     <- "Serum cholesterol (mg/dL)"
label(dat$copper)   <- "Urine copper (microg/day)"
label(dat$trig)     <- "Triglycerides (mg/dL)"

table1(~ age + sex + stage + edema + spiders + hepato + ascites +
         platelet + protime + albumin + alk.phos + ast + bili + chol +
         copper + trig | trt, data=dat)

table1()函数不可见地返回一个可以进一步处理的输出对象。这可以通过knitr::kable()或使用papajaapa_table()函数(或其他表函数,例如来自kableExtra

首先,将 的输出保存table1()为对象:

output <- table1(~ age + sex + stage + edema + spiders + hepato + ascites +
         platelet + protime + albumin + alk.phos + ast + bili + chol +
         copper + trig | trt, data=dat)

使用knitr::kable()会产生一个超出页边距的表格,所以这里有一个例子apa_table()

library(papaja)

# Restructure object
x <- attr(output, "obj")$contents
names(x) <- lapply(x, function(x){rownames(x)[[1L]]})
x <- lapply(x, function(x){x[-1L, ]})

# Use apa_table()
apa_table(x, caption = "Output from table1 in a pdf document.")

结果在 PDF 文档中如下所示:从 PDF 输出

于 2021-07-22T16:06:32.323 回答