R Shiny DT updateSearch选择问题

时间:2019-02-13 09:00:39

标签: r shiny dt

在Shiny App的DT中使用updateSearch更新因子列上的列搜索时似乎出现了一些问题。在正确过滤DT表的内容的同时,单击“选择搜索”字段时,所选值不会作为输入值显示在该字段中。

另一方面,在通过searchCols = list()选项重新呈现表时添加搜索时,搜索选择似乎正确且按预期工作。

下面是一个重现此行为的示例。单击“单击我!”时,您会看到此行为。按钮,然后使用列名搜索字段进行选择。

有什么办法解决这个问题吗?

谢谢。

library(DT)

server = shinyServer(function(input, output, session) {

    values <- reactiveValues()
    values$i <- 0

    mtcars2 = mtcars[,c("hp","mpg")]
    mtcars2$names <- as.factor(rownames(mtcars))
    output$x4 = DT::renderDataTable(mtcars2, server = TRUE, filter = "top", rownames = FALSE)

    dtp = dataTableProxy("x4")

    output$x5 = renderPrint({
        cat('Rows on the current page:\n\n')
        cat(input$x4_rows_current, sep = ', ')
        cat('\n\nAll rows:\n\n')
        cat(input$x4_rows_all, sep = ', ')
        cat('\n\nSelected rows:\n\n')
        cat(input$x4_rows_selected, sep = ', ')
        cat('\n\nSearch term:\n\n')
        cat(input$x4_search, sep = ', ')
        cat('\n\nColumn searches\n\n')
        cat(input$x4_search_columns, sep = ', ')
        cat('\n\nButton clicked\n\n')
        cat(values$i, sep = ', ')
        cat('\n\nLast action\n\n')
        cat(values$last, sep = ', ')
    })

    observeEvent(input$mybutton,{
        values$i <- values$i + 1

        if (all(input$x4_search_columns == "")) {
            values$last <- "Input vals"
            updateSearch(dtp, keywords = list(global = "", columns = c("","", '["Mazda RX4","Hornet 4 Drive"]')))
        } else {
            values$last <- "Clear vals"
            updateSearch(dtp, keywords = list(global = "", columns = ""))
        }
    })
})


ui = fluidPage(
    title = 'DataTables Information',
    fluidRow(
        column(6, DT::dataTableOutput('x4')),
        column(6, verbatimTextOutput('x5'))
    ),
    actionButton("mybutton", "Click Me!")
)

shinyApp(ui = ui, server = server)

0 个答案:

没有答案