无法使用 R Shiny 中的 DT 包取消选择由代理选择的行

Can't deselect a row that is selected by proxy using the DT package in R Shiny

在我闪亮的应用程序中,用户可以 select 数据 table 中的一行,这将显示有关该行的信息。如果该行被删除select,关于该行的信息将消失。

有时,某行会被代理 select 编辑,这会触发显示该行的相同信息。但是,如果用户单击该行以将其删除select,该行仍然是selected,即使它看起来是删除select。有关该行的信息不会消失,如果您要更改 table 的某些内容(切换页面并返回、更改页面长度等),该行会再次突出显示,表明它仍然是 select编辑。只有点击它三次(幻影 deselect, select, deselect),该行才真正被 deselected.

这似乎是 DT 包的问题,​​但我不确定。我使用的是 DT 的 0.4 版和闪亮的 1.1.0 版。这是一个可重现的例子:

library(shiny)
library(DT)

ui <- fluidPage(
  fluidRow(DTOutput("table")),
  fluidRow(actionButton("select", "Select First Row by Proxy")),
  fluidRow(textOutput("selected_row"))
)

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

  output$table <- renderDT({datatable(mtcars, selection = "single")})

  observeEvent(input$select, {
    selectRows(proxy = dataTableProxy("table"), selected = 1)
  })

  observeEvent(input$table_rows_selected, {
    output$selected_row <- renderText(paste0("Row selected: ", input$table_rows_selected))
  })

}

shinyApp(ui = ui, server = server)

当我升级到下一个版本的 DT 包时,这个问题得到了解决。