使用 RStudio 和 Knitr,如何可变地对特定列进行颜色编码? 我想让它基于数据框 df$hex.color 的列呈现

问题描述

我有一个df 构建的数据框 base::colors(TRUE);,可以看作下面的示例:

df = structure(list(color = c("white","aliceblue","antiquewhite","antiquewhite1","antiquewhite2","antiquewhite3","antiquewhite4","aquamarine","aquamarine2","aquamarine3","aquamarine4","azure","azure2","azure3","azure4","beige","bisque","bisque2","bisque3","bisque4"),hex.color = c("#FFFFFF","#F0F8FF","#FAEBD7","#FFEfdb","#EEDFCC","#CDC0B0","#8B8378","#7FFFD4","#76EEC6","#66CDAA","#458B74","#F0FFFF","#E0EEEE","#C1CDCD","#838B8B","#F5F5DC","#FFE4C4","#EED5B7","#CDB79E","#8B7D6B"),r = c(255,240,250,255,238,205,139,127,118,102,69,224,193,131,245,139),g = c(255,248,235,239,223,192,228,213,183,125),b = c(255,215,219,204,176,120,212,198,170,116,220,196,158,107)),row.names = c(NA,20L),class = "data.frame")

你可以看到它是如何呈现的:

enter image description here

我想让它基于数据框 df$hex.color 的列呈现。

理想情况下,它可能是一个我可以用颜色填充的新列 df$empty。这样人们就可以看到“名称”、“十六进制值”,并直观地看到颜色,而无需我将其放入大图形中。

使用 RStudio、Knitr,如何对特定列进行可变颜色编码

解决方法

这可能是使用 kableExtra 的一种方法。我在带有 HTML 渲染的 RMarkdown 文档中尝试了这一点。这涉及创建一个包含空格的新列 empty。使用 cell_spec 中的 kableExtra,您可以根据 empty 指示 hex.color 列中单元格的背景颜色。确保在空格中包含 escape = FALSE

library(kableExtra)
library(dplyr)

df$empty = strrep(" ",10)

df %>%
  mutate(empty = cell_spec(empty,background = hex.color,escape = FALSE)) %>%
  kable(escape = FALSE) %>%
  kable_styling()