(R) 编辑Data中多列数据后面单元格的渐变色Table

(R) Edit Gradient Color of Cells Behind Multiple Columns of Data In Data Table

几天前我问了一个类似的问题,通过与一些人交谈取得了一些进展,但我需要更多帮助才能达到我想要的程度。所以这就是我所在的位置:

我想要一个特定大小的数据 table,其中包含数据列(不同比例),并且能够将颜色范围(有点像热图)应用于单元格中的值数据的大小 table 取决于列中值的大小。

这是提供给我的一些代码:

library(DT)
testrun <- round(runif(100), 6)

data <- data.frame(testrun = testrun)
brks <- quantile(data$testrun, probs = seq(.05, .95, .01), na.rm = TRUE) 

clrs_df <- colorRamp(c("white","blue"))(c(0,brks))  %>%
  as_tibble(.name_repair ="minimal") %>%
  setNames(nm=c("r","g","b")) %>%
  mutate_all(~as.character(round(.,digits=0)))  %>%
 mutate(mycolor=paste0("rgb(",paste(r,g,b,sep = ","),")"))

 clrs <- pull(clrs_df,mycolor)
 DT::datatable(data,rownames=TRUE,options = list(lengthChange = FALSE, dom='t')) %>%
      formatStyle(colnames(data), backgroundColor = styleInterval(brks, clrs))

上面的示例适用于一列数据,但我打算拥有多列数据,我希望这些颜色渐变分别应用于每一列。

我已经尝试在代码的赋值部分和 brks 赋值行中用 mtcars 代替 testrun,但结果是 table 没有应用任何颜色。

有人可以帮我指明正确的方向吗?如有任何帮助,我们将不胜感激!

谢谢!

我想你想要:

library(DT)
data <- data.frame(
  C1 = rnorm(100),
  C2 = rgamma(100, 10, 10)
)

dtable <- datatable(data, rownames=TRUE, options = list(lengthChange = FALSE, dom='t'))

colRamp <- colorRamp(c("white","blue"))
for(column in names(data)){
  x <- na.omit(data[[column]])
  brks <- quantile(x, probs = seq(.05, .95, .01))
  RGB <- colRamp(c(0, (brks-min(x))/(max(x)-min(x))))
  clrs <- apply(RGB, 1, function(rgb){
    sprintf("rgb(%s)", toString(round(rgb,0)))
  })
  dtable <- dtable %>% 
    formatStyle(column, backgroundColor = styleInterval(brks, clrs))
}

dtable