表格内容在过滤后消失

时间:2019-07-12 15:12:24

标签: r datatable shiny dt

我需要将过滤从配置文件传递到数据表。呈现表格后,用户必须能够清洁过滤器并查看表格的全部内容

将过滤应用于因子列时会出现问题。在这种情况下,表的内容已呈现,但未在表中显示。有必要另外单击过滤器,然后选择另一个值。但是它对于字符列仍然可以正常工作。如何解决?

有一个例子可以重现我的问题。

enter image description here

library(shiny)
library(DT)

ui <- fluidPage(

  fluidRow(
    selectInput(inputId = "table_fltration", 
                label = 'Choose table filtration', 
                choices = c("Working example",
                            "Not working example"), 
                selected = "Working example"),

    actionButton(inputId = 'update_btn', label = "Use config")),

  fluidRow(dataTableOutput("iris_table"))

)

server <- function(input, output, session) {

  columns_search <- reactive({

    if (input$table_fltration == "Working example") {
      ex <- c("7.2 ... 7.9", "", "", "", "", "[\"anything\"]")
    } else {
      ex <- c("", "", "", "", "[\"anything\"]", "")
    }


    columns_search <- list()

    for ( i in 1:length(ex)) {

      if(ex[i] != "") {
        element = list(list(search = ex[i]))
      } else {element = NULL}

      columns_search[i] <- element
    }

    columns_search

  })

  iris_table_ex <- reactive({

    iris$Species_2 = as.character(iris$Species)
    iris

  })

  observeEvent(input$update_btn, 

               output$iris_table <- DT::renderDataTable({

                 DT::datatable(iris_table_ex(), 
                               filter = list(position = 'top'),
                               class = 'hover',
                               rownames = FALSE,
                               options = list(orderClasses = TRUE,
                                              stateSave = FALSE,
                                              searchHighlight = TRUE,
                                              searchCols = columns_search(),
                                              scrollX = TRUE,
                                              paging = TRUE,
                                              pageLength = 10))
               })
  )

}

shinyApp(ui, server)

0 个答案:

没有答案