Основываясь на примере DT 3 из https://rstudio.github.io/DT/010-style.html, я хочу установить цвет фона с помощью styleInterval для каждого столбца индивидуально, а не для всей таблицы, а динамически для случаев, когда количество столбцов неизвестно раньше времени. Вот уменьшенная версия того же data.frame в примере, где значения столбцов растут на порядки:
library(DT)
options(DT.options = list(pageLength = 5))
df = data.frame(a = round(rnorm(10), 3),
b = round(rnorm(10, 10), 3),
c = round(rnorm(10, 100), 3))
Жестко запрограммированное решение методом перебора с использованием lapply
выглядит так: это:
brks <- lapply(df, quantile, probs = seq(.05, .95, .05), na.rm = TRUE)
clrs <- lapply(brks, function(x) {
round(seq(255, 40, length.out = length(x) + 1), 0) %>%
{paste0("rgb(255,", ., ",", ., ")")}
})
datatable(df) %>%
formatStyle('a', backgroundColor = styleInterval(brks[['a']], clrs[['a']])) %>%
formatStyle('b', backgroundColor = styleInterval(brks[['b']], clrs[['b']])) %>%
formatStyle('c', backgroundColor = styleInterval(brks[['c']], clrs[['c']]))
Хотя это работает, это не подходит, когда количество и имена столбцов меняются.
Кажется, что должен быть способ циклически перебирать names(df)
и последовательно перенаправить один результат formatStyle
в следующий.
Если кто-нибудь знает, как это сделать, или у него есть другое решение, я с нетерпением жду сообщения об этом. Спасибо.