Ячейка условного форматирования в DataTable в R

У меня есть следующий код в качестве примера:

library(DT)

datatable(iris, options = list(pageLength = 5)) %>%
  formatStyle(
    'Sepal.Width',
    backgroundColor = styleInterval(3, c('gray', 'yellow'))
)

Однако меня интересует выделение только определенной «ячейки» в зависимости от условия.

Например, если iris[3, 2] > 3.1, то цвет фона должен быть желтым.

для справки http://rstudio.github.io/DT/

sessionInfo() DT_0.1


r dt
person dimitris_ps    schedule 09.06.2015    source источник


Ответы (1)


Это можно сделать с помощью вспомогательных функций DT. Существует функция стилизации ячеек для определенных интервалов (styleInterval()) или если значение ячейки равно чему-то с (styleEqual()). Похоже, что styleEqual() не поддерживает прямой ввод условия, но вы могли бы сначала вычислить условие (возможно, создать для него еще один столбец), а затем использовать его.

Как описано на странице, указанной выше (в разделе 2 «Ячейки таблицы стилей»), вы можете сделать это, например, так:

datatable(iris) %>% 
  formatStyle('Sepal.Length', fontWeight = styleInterval(5, c('normal', 'bold'))) %>%
  formatStyle(
    'Sepal.Width',
    color = styleInterval(c(3.4, 3.8), c('white', 'blue', 'red')),
    backgroundColor = styleInterval(3.4, c('gray', 'yellow'))
  ) %>%
  formatStyle(
    'Petal.Length',
    background = styleColorBar(iris$Petal.Length, 'steelblue'),
    backgroundSize = '100% 90%',
    backgroundRepeat = 'no-repeat',
    backgroundPosition = 'center'
  ) %>%
  formatStyle(
    'Species',
    transform = 'rotateX(45deg) rotateY(20deg) rotateZ(30deg)',
    backgroundColor = styleEqual(
      unique(iris$Species), c('lightblue', 'lightgreen', 'lightpink')
    )
  )
person nnn    schedule 19.02.2017