我需要在UI屏幕上显示来自表格的数据。我目前正在使用DT :: renderDataTable。
在renderDataTable中,代码将返回从表返回的数据。如果表中没有可用数据,则屏幕上将显示空白。
当表中没有数据时,我需要添加一些自定义错误消息,请您帮忙。
答案 0 :(得分:3)
有不同的方法。
显示通知
library(DT)
library(shiny)
ui <- fluidPage(
actionButton("load", "Load/unload data"),
DTOutput("table")
)
server <- function(input, output, session) {
df <- eventReactive(input$load, {
if(input$load %% 2 == 0){
return(cars)
} else {
shiny::showNotification("No data", type = "error")
NULL
}
})
output$table <- renderDT(df())
}
shinyApp(ui, server)
显示错误
library(DT)
library(shiny)
ui <- fluidPage(
actionButton("load", "Load/unload data"),
DTOutput("table")
)
server <- function(input, output, session) {
df <- reactive({
if(input$load %% 2 == 0){
dat <- cars
} else {
dat <- NULL
}
validate(
need(!is.null(dat), "No data")
)
return(dat)
})
output$table <- renderDT(df())
}
shinyApp(ui, server)
您还可以显示showModal
的模式。
答案 1 :(得分:0)
我知道这个问题很陈旧,但是我想将这个答案放在这里,供其他寻求解决方案的人使用。
将以下内容添加到对Datatable
或renderDataTable
的呼叫中
options = list(language = list(emptyTable = 'My Custom No Data Message'))
此外,将零行数据帧传递给renderDataTable,以便它知道如何设置列。您可以通过以下方式获得零行数据框:
如果您没有现有的数据框:
data.frame(ColOne=numeric(), ColTwo=character(), ColThree=numeric, stringsAsFactors=FALSE)
如果您确实有一个数据框:
myexistingdf[NULL,]