我使用 R table1 创建了一个表,并希望将其保存为具有一行代码的 png 图像,而不是使用 R GUI 界面中的导出按钮。我需要这个,以便我可以使用 papaja 包将表格上传到 Rmarkdown,该包不能正确加载和编织 HTML 表格。我在这里看了看:R: table1 output,但它并没有解决我的问题。我也尝试使用 htmlwidgetes 和 webshot,但没有成功。任何建议表示赞赏。
问问题
743 次
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()
或使用papaja的apa_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.")
于 2021-07-22T16:06:32.323 回答