R gridExtra:动态修改单个 tableGrob 的主题?

R gridExtra: modify theme on the fly for a single tableGrob?

我在这里阅读了 Baptiste 对 gridextra 的 tableGrob 函数的精彩解释:https://github.com/baptiste/gridextra/wiki/tableGrob

来自他关于美学格式的部分:

tt1 <- ttheme_default()
tt2 <- ttheme_minimal()
tt3 <- ttheme_minimal(
  core=list(bg_params = list(fill = blues9[1:4], col=NA),
            fg_params=list(fontface=3)),
  colhead=list(fg_params=list(col="navyblue", fontface=4L)),
  rowhead=list(fg_params=list(col="orange", fontface=3L)))

grid.arrange(
  tableGrob(iris[1:4, 1:2], theme=tt1),
  tableGrob(iris[1:4, 1:2], theme=tt2),
  tableGrob(iris[1:4, 1:2], theme=tt3),
  nrow=1)

我想知道是否可以为特定的 tableGrob 修改主题 "on-the-fly",例如:

grid.arrange(
  tableGrob(iris[1:4, 1:2], theme=tt1 + theme_default(core=list(fg_params=list(cex=0.7))),
  tableGrob(iris[1:4, 1:2], theme=tt2),
  tableGrob(iris[1:4, 1:2], theme=tt3),
  nrow=1)

最后一段代码不起作用,但我想做的是即时修改主题 "tt1" 以仅针对第一个 tableGrob 更改核心文本大小,而不永久更改主题 "tt1".

谢谢!

主题似乎只是列表。您可以使用 modifyList 更新列表的属性。例如

grid.arrange(
  tableGrob(iris[1:4, 1:2], theme=modifyList(tt1, list(core=list(fg_params=list(cex=0.7))))),
  tableGrob(iris[1:4, 1:2], theme=tt2),
  tableGrob(iris[1:4, 1:2], theme=tt3),
  nrow=1)