如何将R中拼接生成的大尺寸统计表格导出为PDF文件
R统计频率表导出PDF的三种可行方法
你生成的tab1为矩阵结构,先转为数据框可适配各类导出工具,以下是可直接运行的实现方案:
方法1:修正gridExtra包的使用
你之前使用gridExtra导出失败,大概率是未将矩阵转为适配的表格结构、或者未正确开闭PDF设备导致,正确实现代码如下:
library(gridExtra) # 处理表格结构 tab1_df <- as.data.frame(tab1) tab1_df$municipionombre <- rownames(tab1_df) rownames(tab1_df) <- NULL # 调整列顺序更符合阅读逻辑 tab1_df <- tab1_df[,c("municipionombre","FA","FAA","FR","FRP","perc")] # 导出PDF,可调整width、height参数适配表格长度 pdf("频率统计结果.pdf", width = 10, height = 8) grid.table(tab1_df) dev.off()
方法2:gt包导出(样式更美观)
gt是R生态中专门用于格式化表格的工具,导出PDF稳定性更高、样式自定义空间更大:
library(gt) library(dplyr) # 同前处理表格结构 tab1_df <- as.data.frame(tab1) tab1_df$municipionombre <- rownames(tab1_df) rownames(tab1_df) <- NULL tab1_df <- tab1_df[,c("municipionombre","FA","FAA","FR","FRP","perc")] # 格式化后导出 tab1_df %>% gt() %>% fmt_percent(columns = c(FR, FRP), decimals = 2) %>% # 给频率列自动添加百分比格式 fmt_number(columns = perc, decimals = 2) %>% cols_label( municipionombre = "城市名称", FA = "绝对频数", FAA = "累计绝对频数", FR = "相对频率", FRP = "累计相对频率", perc = "占比(%)" ) %>% gtsave("频率统计结果_美化版.pdf")
方法3:R Markdown渲染导出
如果需要把表格、分析代码、说明文字整合到同一份PDF文档中,可通过R Markdown实现:
- 新建R Markdown文件,输出格式选择PDF
- 在代码块中放入统计和导出逻辑:
```{r, echo=FALSE, results='asis'} library(knitr) # 你的原有统计代码 FA=table(ant$municipionombre) FR=FA/margin.table(FA) FAA=cumsum(FA) FRP=cumsum(FA)/margin.table(FA) perc=FR*100 tab1=cbind(FA,FAA,FR,FRP,perc) # 处理表格结构 tab1_df <- as.data.frame(tab1) tab1_df$municipionombre <- rownames(tab1_df) rownames(tab1_df) <- NULL tab1_df <- tab1_df[,c("municipionombre","FA","FAA","FR","FRP","perc")] # 输出表格 kable(tab1_df, caption = "城市频率统计结果")
点击编辑器的「Knit」按钮即可直接生成包含表格的完整PDF文件。 内容的提问来源于stack exchange,提问作者Majo
相关产品推荐
相关产品推荐

