R datatable Dynami c style Интервал по столбцу - PullRequest
0 голосов
/ 29 мая 2020

Основываясь на примере 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 в следующий.

Если кто-нибудь знает, как это сделать, или у него есть другое решение, я с нетерпением жду сообщения об этом. Спасибо.

...