编辑数据中单元格的 RGB 颜色 Table (R)

Edit RGB colors of Cells in Data Table (R)

我正在处理一个包含数据 table 的项目。我希望数据 table 单元格按列中的相似值着色。我很难理解如何修改下面的代码以便能够在我的数据中选择颜色 table。该代码取自我在 Whosebug 上找到的另一个示例:

set.seed(1)
df <- cbind.data.frame(matrix(round(rnorm(50), 3), 10), sample(0:1, 10, TRUE))
brks <- apply(df, 2, quantile, probs=seq(.05, .95, .05), na.rm=T)
clrs <- apply( brks, 2, function(x) round(seq(255, 40, length.out = length(x)+1), 0) 
%>% {paste0("rgb(255,", ., ",", ., ")")})
eval(parse(text=paste0("datatable(df) ", paste(sapply(1:ncol(df), function(i) 
paste0("%>% formatStyle(names(df)[",i,"], backgroundColor = styleInterval(brks[,",i,"], 
clrs[,",i,"]))") ), collapse = " " ))))

我不明白如何修改 paste0 中的 clrs 行和 rgb 函数以获得我想要的颜色。我已经对这两个块进行了修补,但无法弄清楚它是如何工作的。有人可以向我解释如何使用上面的代码准确指定颜色。如果我想让颜色变成蓝色或绿色,或者从一种颜色渐变为另一种颜色,我该怎么做?

我很卡。任何帮助,将不胜感激!谢谢!

首先eval用于评估一个名字,一个电话或其他...在这种情况下它是一个名字。我提出了一个更简单的代码,我可以解释每个部分,这将是你的一部分来适应它:

library(DT)

# the dataset
df <- cbind.data.frame(matrix(round(rnorm(50), 3), 10))

# the color wanted
sample_color <- data.frame(col1 = c(0.2, 0.1, 0.6),
                           col2 = c(0.5, 0.1, 0.3))

datatable(df) %>%
    formatStyle('1', color = eval(call(name = "rgb",
                                       matrix(sample_color$col1, ncol = 3))))

我们需要使用 matrix 因为 that. The eval and call are only base R that you will probably better understand if you directly goes to their presentation pages : eval, call

编辑 1 更改数据表单元格的背景颜色

datatable(df) %>%
    formatStyle('1', color = eval(call(name = "rgb",
                                       matrix(sample_color$col1, ncol = 3))),
                backgroundColor = eval(call(name = "rgb",
                                             matrix(sample_color$col1, ncol = 3))))

查看 DT 的包插图以更好地了解其工作原理。有适合您的格式货币部分。