【问题标题】:Coloring cells in kableExtra based on value根据值对 kableExtra 中的单元格着色
【发布时间】:2020-11-26 07:24:00
【问题描述】:

我正在使用 R Markdown 创建一个 pdf 报告,并且有一个这样的概率表:

x <- data.frame(a = c(0.1, 0.2, 0.4), b = c(0.3, 0.5, 0.7), c = c(0.8, 0.9, 0.5))

> x
    a   b   c
1 0.1 0.3 0.8
2 0.2 0.5 0.9
3 0.4 0.7 0.5

编织成pdf时,表格是通过kable编织的,如下:

kable(x, format = 'latex', booktabs = T)

有什么简单的方法可以让单元格在编织时按其概率值着色?我见过类似的问题,但没有一个能充分回答我的问题。

我的目标是有一个看起来或多或少像这样的输出:

【问题讨论】:

  • 您是否查看过类似formattable 而不是knitr 的包?
  • 我试图坚持使用knitr(如果可能的话),因为在我正在使用的更大的数据集中,knitr 允许我用@987654328 很好地嵌套表格的行@ 命令。

标签: r r-markdown knitr kable kableextra


【解决方案1】:

你可以在你的 knitr R 块中尝试这样的事情:

suppressPackageStartupMessages(invisible(
  lapply(c("dplyr", "knitr", "kableExtra", "scales"),
           require, character.only = TRUE)))  

x <- data.frame(a = c(0.1, 0.2, 0.4), 
           b = c(0.3, 0.5, 0.7), 
           c = c(0.8, 0.9, 0.5)) 
xc <- seq(min(x), max(x), length.out = 10)
pal <- seq_gradient_pal("#e9f7cb", "#1b7378")(xc)

setSpec <- function(y){
  kableExtra::cell_spec(y, "latex", background = pal[cut(y, breaks=xc, include.lowest = TRUE)])
}
apply(x, 2, setSpec) %>% knitr::kable("latex", escape = FALSE, booktabs = TRUE, linesep = "")

【讨论】:

  • 这对我来说效果很好,但是一旦我这样做了,我就无法弄清楚如何添加其他 kable 样式(例如列宽)。任何建议 - 我可以直接在单元格规格中执行吗?
猜你喜欢
  • 2019-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-08
  • 1970-01-01
  • 2020-07-23
  • 2017-06-19
  • 1970-01-01
相关资源
最近更新 更多