【问题标题】:DT apply background colour to cell based on separate data frameDT 根据单独的数据框将背景颜色应用于单元格
【发布时间】:2019-09-30 00:33:25
【问题描述】:

我有一个表格,我想将背景颜色应用到各个单元格。颜色与呈现的数据没有明显的直接关系,并在单独的数据集中指定。

我将如何应用中指定的背景单元格颜色:

set.seed(123)
colours2apply <- sample(x=c(rgb(1, 0, 0 ), rgb(1, 1, 0 ), rgb(0, 1, 1 )), 25, replace = T) %>% 
  matrix(nrow=5) %>% 
  data.frame()

> colours2apply
       X1      X2      X3      X4      X5
1 #FF0000 #FF0000 #00FFFF #00FFFF #00FFFF
2 #00FFFF #FFFF00 #FFFF00 #FF0000 #00FFFF
3 #FFFF00 #00FFFF #00FFFF #FF0000 #FFFF00
4 #00FFFF #FFFF00 #FFFF00 #FF0000 #00FFFF
5 #00FFFF #FFFF00 #FF0000 #00FFFF #FFFF00

到一个像这样的数据表:

datatable(iris[1:5, 1:5])

【问题讨论】:

    标签: r dt


    【解决方案1】:
    dat <- iris[1:5,1:5]
    colours2apply <- sample(x=c(rgb(1, 0, 0 ), rgb(1, 1, 0 ), rgb(0, 1, 1 )), 25, replace = T) %>% 
      matrix(nrow=5) %>% 
      data.frame()
    
    dat <- cbind(dat, colours2apply)
    
    datatable(dat, 
              options = list(columnDefs = list(list(visible=FALSE, targets = 6:10)))) %>% 
      formatStyle(1, valueColumns = 6, backgroundColor = JS("value")) %>%
      formatStyle(2, valueColumns = 7, backgroundColor = JS("value")) %>%
      formatStyle(3, valueColumns = 8, backgroundColor = JS("value")) %>%
      formatStyle(4, valueColumns = 9, backgroundColor = JS("value")) %>%
      formatStyle(5, valueColumns = 10, backgroundColor = JS("value")) 
    

    或者,使用循环:

    DT <- datatable(dat, 
                    options = list(columnDefs = list(list(visible=FALSE, targets = 6:10))))
    for(i in 1:5){
      DT <- DT %>%
        formatStyle(i, valueColumns = i+5, backgroundColor = JS("value"))
    }
    DT
    

    【讨论】:

    • 只是好奇颜色和值是否必须是同一数据框的一部分?
    猜你喜欢
    • 2021-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-30
    • 2011-04-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多