r - 编辑数据表中单元格的 RGB 颜色 (R)
问题描述
我正在开发一个包含数据表的项目。我希望数据表单元格由列中的相似值着色。我很难理解如何修改下面的代码以便能够在我的数据表中选择颜色。代码取自我在 Stackoverflow 上找到的另一个示例:
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 函数以获得我想要的颜色。我已经修改了这两个块,但无法弄清楚它是如何工作的。有人可以向我解释如何使用上面的代码准确指定颜色。如果我想获得蓝色或绿色或从一种颜色褪色到另一种颜色,我将如何去做?
我很困。任何帮助,将不胜感激!谢谢!
解决方案
Firsteval
用于评估名称、呼叫或其他...在这种情况下,它是一个名称。我提出了一个更简单的代码,我可以解释每个部分,这将是你调整它的部分:
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
因此我们需要使用. eval
和是唯一的call
基础 R,如果您直接访问他们的演示页面,您可能会更好地理解: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的包小插图以更好地了解它的工作原理。有一个部分 formatCurrency 适合您。
推荐阅读
- es6-promise - 在 JavaScript 承诺链中实现轮询机制
- android - 如何在 Flutter 中为闪屏创建渐变色背景?
- vb.net - 通过单击activereport vb2015中的按钮直接打印文档
- c# - 获取没有旧值的 jsondiffpatch
- android - 密码算法AES和AES_128有什么区别
- svn - 是否可以在 svn 中创建不区分大小写的忽略列表?
- .net - 有没有办法从 azure blob 获取文件结构?
- graphql - Graphql 内联片段搜索选项
- angular - Angular Validators.pattern 密码
- c# - ComboBox2 获取 ComboBox1 函数中的字段