R DataTables中的交互式突出显示

时间:2019-02-22 13:57:01

标签: r shiny datatables dt

感谢您的宝贵时间。

我正在尝试使一个闪亮的应用程序正常工作,并且由于某种原因,在呈现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 :(得分:0)

> styleEqual(c(TRUE,FALSE),c('green','red'))
[1] "value == 'TRUE' ? 'green' : value == 'FALSE' ? 'red' : ''"
attr(,"class")
[1] "JS_EVAL"

value不是'TRUE''FALSE',而是truefalse

您可以这样做:

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