根据值为kableExtra中的单元格着色

时间:2020-08-06 04:00:50

标签: r r-markdown knitr kable kableextra

我正在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)

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

我的目标是使输出看起来像这样:

Babou

1 个答案:

答案 0 :(得分:3)

您可以在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 = "")