I have data.frame with one ID column and multiple numeric columns, the number of numeric columns may vary. Of these numeric columns, I want to color all values ββabove the average value of the column, and all values ββbelow the column indicate red. The code below gives my desired result, but this is not general code for data frames with more or less numeric columns.
library(DT) data2 <- cbind(ID = "some ID",iris[,1:4]) datatable( data2, rownames = FALSE, class = 'cell-border stripe', options = list( dom = 't', pageLength = -1, lengthMenu = list(c(-1), c('All')) ) ) %>% formatStyle(colnames(data)[2], backgroundColor = styleInterval(mean(data[,2]), c("red","green"))) %>% formatStyle(colnames(data)[3], backgroundColor = styleInterval(mean(data[,3]), c("red","green"))) %>% formatStyle(colnames(data)[4], backgroundColor = styleInterval(mean(data[,4]), c("red","green"))) %>% formatStyle(colnames(data)[5], backgroundColor = styleInterval(mean(data[,5]), c("red","green")))
I would like to replace the code above with the code below, but this will not work. The code below will also work when the number of numeric columns changes.
datatable( data2, rownames = FALSE, class = 'cell-border stripe', options = list( dom = 't', pageLength = -1, lengthMenu = list(c(-1), c('All')) ) ) %>% formatStyle(colnames(data2)[2:ncol(data2)], backgroundColor = styleInterval(colMeans(data2[,2:ncol(data2)]), c("red","green")))
Is it possible? So yes, how?