R tableGrob 更改行的格式

标签 r r-grid gridextra grob

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

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

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

谢谢!

最佳答案

您可以按照 the vignette 中的建议编辑 grobs

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

关于R tableGrob 更改行的格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32173928/

相关文章:

r - 使用字符串向量输入在 dplyr 中按多列进行分组

从 Ubuntu 中删除 anaconda R

r - 估计ggplot2中图例占用的绘图百分比

r - 如何手动将具有固定纵横比的视口(viewport)放入其父级中,从而不会像 ggplot 那样浪费空间?

r - 使用 magrittr 和 lapply 将列表中每个 df 中的列除以值列表

r - 共享内存中的 data.table 以进行并行计算

r - 使用纬度/经度坐标创建六边形单元格

R gridExtra 2.0.0 : tableGrob vertical and horizontal padding

r - 在 R 中,如何存储插图以便稍后使用 grid.arrange 进行排列?

r - 使用多面 ggplot 2.0.0 和 gridExtra 安排公共(public)绘图宽度