使用grid和gridExtra为R中的PDF表格添加标题

使用grid和gridExtra为R中的PDF表格添加标题,r,pdf,gridextra,R,Pdf,Gridextra,我希望进一步扩展,以便为PDF添加一个标题 title <- "Table 1: Iris Data" title几件事:你能把它简化为重建它所需要的东西吗?我们可能不需要重新创建数据操作,只需要最终实际处理的数据。看起来您还意外地重复了代码。还有,为什么您需要绘制表格,而不仅仅是使用像knitr::kable这样的东西将其打印为可复制、可搜索的文本?我在一个闪亮的下载处理程序中使用这段代码-您可以使用knitr::kable将数据框导出为PDF吗?我不熟悉在闪亮中这样做,但我可以想象。

我希望进一步扩展,以便为PDF添加一个标题

title <- "Table 1: Iris Data"

title几件事:你能把它简化为重建它所需要的东西吗?我们可能不需要重新创建数据操作,只需要最终实际处理的数据。看起来您还意外地重复了代码。还有,为什么您需要绘制表格,而不仅仅是使用像
knitr::kable
这样的东西将其打印为可复制、可搜索的文本?我在一个闪亮的下载处理程序中使用这段代码-您可以使用knitr::kable将数据框导出为PDF吗?我不熟悉在闪亮中这样做,但我可以想象。这篇文章看起来可能会有一些帮助:你能把它简化为重新创建它所需要的东西吗?我们可能不需要重新创建数据操作,只需要最终实际处理的数据。看起来您还意外地重复了代码。还有,为什么您需要绘制表格,而不仅仅是使用像
knitr::kable
这样的东西将其打印为可复制、可搜索的文本?我在一个闪亮的下载处理程序中使用这段代码-您可以使用knitr::kable将数据框导出为PDF吗?我不熟悉在闪亮中这样做,但我可以想象。波斯特看起来可能会有所帮助
d <- iris[sample(nrow(iris), 187, TRUE),]
d$another <- "More Data"
d$column <- "Even More Will it Be off the Page"
The Provided Answer
library(gridExtra)
library(grid)
d <- iris[sample(nrow(iris), 187, TRUE),]
d$another <- "More Data"
d$column <- "Even More Will it Be off the Page"
tg <- tableGrob(d, rows = seq_len(nrow(d))) 

fullheight <- convertHeight(sum(tg$heights), "cm", valueOnly = TRUE)
margin <- unit(0.51,"in")
margin_cm <- convertHeight(margin, "cm", valueOnly = TRUE)
a4height <- 29.7 - margin_cm
nrows <- nrow(tg)
npages <- ceiling(fullheight / a4height)

heights <- convertHeight(tg$heights, "cm", valueOnly = TRUE) 
rows <- cut(cumsum(heights), include.lowest = FALSE,
            breaks = c(0, cumsum(rep(a4height, npages))))

groups <- split(seq_len(nrows), rows)

gl <- lapply(groups, function(id) tg[id,])

pdf("multipage.pdf", paper = "a4", width = 0, height = 0)
for(page in seq_len(npages)){
  grid.newpage()
  grid.rect(width=unit(21,"cm") - margin,
            height=unit(29.7,"cm")- margin)
  grid.draw(gl[[page]])
}
## alternative to explicit loop:
## print(marrangeGrob(grobs=gl, ncol=1, nrow=1, top=NULL))
dev.off()