问题描述
我有一个从 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")
你可以看到它是如何呈现的:
我想让它基于数据框 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()