在闪亮的应用程序中使用 renderDT() 时,删除 DT::datatable 的 header 会导致 'no matching records found'

Deleting DT::datatable's header results in 'no matching records found' when using renderDT() in a shiny app

尝试从 DT::datatable 中删除 headers 会导致 'No matching records found'renderDT() 中使用。为什么会这样?我该如何解决?

library(shiny)
library(shinydashboard)
library(DT)
ui <- dashboardPage(
    dashboardHeader(title = "Dynamic sidebar"),
    dashboardSidebar(
    ),
    dashboardBody(
        DT::dataTableOutput("t")
    )
)

server <- function(input, output) {
    output$t<-renderDT(datatable(head(iris),colnames = ""))
}

shinyApp(ui, server)

此问题的简单解决方案是将 renderDT() 中的 server 参数设置为 FALSE。然而,这个论点的描述说:

if FALSE, then the entire data frame is sent to the browser at once. Highly recommended for medium to large data frames, which can cause browsers to slow down or crash.

如果这对您来说不是问题,请尝试以下操作:

library(DT)
library(shiny)
library(shinydashboard)
ui <- dashboardPage(
  dashboardHeader(title = "Dynamic sidebar"),
  dashboardSidebar(
  ),
  dashboardBody(
    DT::dataTableOutput("t")
  )
)
debugonce(renderDT)
server <- function(input, output) {
  output$t <- renderDT(datatable(head(iris),colnames = ""), server = FALSE)
}

shinyApp(ui, server)