尝试从 DT::datatable 中删除标头会在
'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)
这个问题的简单解决方案是将
server
中的renderDT()
参数设置为FALSE
。然而,这个论点的描述说:
如果为 FALSE,则将整个数据帧立即发送到浏览器。强烈推荐用于中型到大型数据帧,这可能会导致浏览器变慢或崩溃。
如果这对你来说不是问题,试试这个:
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)
去掉
colnames
参数,或者给一个列名的特征向量
我在模块调用中遇到了同样的问题。我花了一段时间才弄明白。
根本原因是
colnames
里面的datatable
参数(或者相当于...
里面的renderDT
参数)。仅使用它来重命名 UI 标题的列名称。
以您的代码为例,但有一个有用的参数:
library(shiny)
library(semantic.dashboard)
library(DT)
ui <- dashboardPage(
dashboardHeader(title = "Dynamic sidebar"),
dashboardSidebar(
),
dashboardBody(
DT::dataTableOutput("t")
)
)
server <- function(input, output) {
output$t <- renderDT(
datatable(
head(iris),
colnames = c(
"Sepal length (mm)",
"Sepal width (mm)",
"Petal length (mm)",
"Petal width (mm)",
"Specie name"
)
)
)
}
shinyApp(ui, server)
对于这种情况恕我直言,无需设置
server = FALSE
。