R tableGrob改变行的格式

时间:2015-08-24 03:05:40

标签: r r-grid gridextra grob

我有一些相对简单的代码来创建一个用于打印到PDF的表:

library(gridExtra)
df <- head(iris)
tableGrob(df, gp = gpar(fontsize = 8), rows = NULL)

我想让最后一行的格式与标题行相同(粗体和深灰色背景)。我知道我可以使用gpar来控制整个表格的格式,但不知道如何影响最后一行。

谢谢!

2 个答案:

答案 0 :(得分:4)

您可以按the vignette

中的建议编辑凹凸
library(gridExtra)
g <- tableGrob(iris[1:4, 1:3])

edit_cell <- function(table, row, col, name="core-fg", ...){
  l <- table$layout
  ids <- which(l$t %in% row & l$l %in% col & l$name==name)
  for (id in ids){
  newgrob <- editGrob(table$grobs[id][[1]], ...)
  table$grobs[id][[1]] <- newgrob
  }
  table
}

g <- edit_cell(g, nrow(g), seq_len(ncol(g)), "core-fg", 
               gp=gpar(fontsize=15, fontface="bold"))
g <- edit_cell(g, nrow(g), seq_len(ncol(g)), "core-bg", 
               gp=gpar(fill="darkolivegreen1", 
                       col = "darkolivegreen4", lwd=5))

grid.newpage()
grid.draw(g)

enter image description here

答案 1 :(得分:3)

一种选择是创建一个新表,并将两者合并在一起,

g1 <- tableGrob(iris[1:4, 1:3], rows=NULL)
g2 <- tableGrob(iris[1, 1:3], rows=NULL, # can't have empty content
                cols=as.character(iris[4, 1:3])) # use 4th row as header

grid.newpage()
g <- rbind(g1[-nrow(g1), ], g2[1,])
grid.draw(g)

enter image description here