在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)