如何将RStudio中Tukey事后检验结果直接导出为PDF
解决Tukey事后检验结果导出PDF的问题
你之前用pdf()得到空文件,是因为pairs(emmeans(...))输出的是文本内容而非图形,pdf()默认只捕获绘图内容,不会自动保存这些文本输出。下面是几个可行的解决办法:
方法1:捕获控制台输出写入PDF
先把检验结果存为对象,再捕获原本要显示在控制台的内容,最后写入PDF:
# 保存Tukey检验结果对象 tukey_res <- pairs(emmeans(M50, ~AgeClass + Month, component="zi"), type="response", bias.adjust=F, adj="Tukey", infer=(TRUE)) # 捕获控制台输出内容 output_content <- capture.output(print(tukey_res)) # 打开PDF设备,调整宽高适配结果长度 pdf("tukey_results.pdf", width = 12, height = 18) # 创建空白绘图区域,隐藏坐标轴 plot(0, 0, type = "n", axes = FALSE, xlab = "", ylab = "") # 用等宽字体打印捕获的文本,保证格式整齐 text(0, 1, paste(output_content, collapse = "\n"), adj = c(0,1), family = "mono", cex = 0.75) # 关闭PDF设备,完成保存 dev.off()
方法2:转成美观表格导出PDF
如果需要格式规整的表格,用knitr和kableExtra实现:
# 第一次使用先安装所需包 install.packages(c("knitr", "kableExtra")) library(knitr) library(kableExtra) # 将检验结果转为数据框格式 tukey_table <- as.data.frame(tukey_res) # 生成带格式的PDF表格,自动适配宽度 kable(tukey_table, "latex", booktabs = TRUE, caption = "Tukey事后检验结果") %>% kable_styling(latex_options = c("striped", "scale_down")) %>% save_kable("tukey_results_table.pdf")
方法3:先存文本再转PDF(简单备选)
如果嫌上面的方法复杂,可先将输出存为文本文件,之后手动转PDF,或用R自带工具自动转换(需电脑安装LaTeX环境):
# 将输出定向写入文本文件 sink("tukey_results.txt") print(tukey_res) sink() # 恢复控制台输出 # 自动将文本转PDF(需LaTeX环境支持) tools::texi2pdf("tukey_results.txt")
内容的提问来源于stack exchange,提问作者YvonneS
相关产品推荐
相关产品推荐

