Интерактивное выделение в R DataTables - PullRequest
0 голосов
/ 22 февраля 2019

Спасибо за время.

Я пытаюсь заставить блестящее приложение работать правильно, и по какой-то причине у меня возникают проблемы с выделением при отображении таблицы данных DT.

Например, это работает:

output$DT = DT::renderDataTable({DT = datatable(DT,options = list(searching = FALSE,paging = FALSE,lengthChange = FALSE,ordering = FALSE,rownames= FALSE)) %>% 
      formatStyle('TEST',backgroundColor = styleEqual(c(1,2,3,4,5), c('chartreuse', 'chartreuse4','yellow','indianred','indianred4'))) )})

Однако при попытке добавить эту дополнительную строку подсветка не появляется, но код выполняется:

%>% 
      formatStyle('TEST2',backgroundColor = styleEqual(c(TRUE,FALSE),c('green','red'))

Я также попробовал styleInterval и получаю те же результаты.

Спасибо.

Воспроизводимый код:

ui <- fluidPage(

    dataTableOutput('DF')

  )



server <- function(input, output, session) {
  DF = as.data.frame(matrix(NA,nrow=2,ncol = 2))
  DF$V1 = c(TRUE,FALSE)
  DF$V2 = c(1,2)

  output$DF = renderDataTable(DF)

  output$DF = DT::renderDataTable({DF = datatable(DF,options = list(searching = FALSE,paging = FALSE,lengthChange = FALSE,ordering = FALSE,rownames= FALSE)) %>% 
    formatStyle('V2',backgroundColor = styleEqual(c(1,2,3,4,5), c('chartreuse', 'blue','yellow','indianred','indianred4'))) %>% 
    formatStyle('V1',backgroundColor = styleEqual(c(TRUE,FALSE),c('green','red')))})

}


shinyApp(ui = ui, server = server) # RUN THE APPLICATION 

1 Ответ

0 голосов
/ 22 февраля 2019
> styleEqual(c(TRUE,FALSE),c('green','red'))
[1] "value == 'TRUE' ? 'green' : value == 'FALSE' ? 'red' : ''"
attr(,"class")
[1] "JS_EVAL"

value - это не 'TRUE' или 'FALSE', это true или false.

Вы можете сделать:

...... %>% 
  formatStyle('V1', 
    backgroundColor = JS("value == true ? 'green' : value == false ? 'red' : ''"))
...