R中DT :: renderDataTable的空表的错误消息

时间:2018-11-05 10:59:11

标签: r shiny

我需要在UI屏幕上显示来自表格的数据。我目前正在使用DT :: renderDataTable。

在renderDataTable中,代码将返回从表返回的数据。如果表中没有可用数据,则屏幕上将显示空白。

当表中没有数据时,我需要添加一些自定义错误消息,请您帮忙。

2 个答案:

答案 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)

我知道这个问题很陈旧,但是我想将这个答案放在这里,供其他寻求解决方案的人使用。

将以下内容添加到对DatatablerenderDataTable的呼叫中

options = list(language = list(emptyTable = 'My Custom No Data Message'))

此外,将零行数据帧传递给renderDataTable,以便它知道如何设置列。您可以通过以下方式获得零行数据框:

如果您没有现有的数据框:

data.frame(ColOne=numeric(), ColTwo=character(), ColThree=numeric, stringsAsFactors=FALSE)

如果您确实有一个数据框:

myexistingdf[NULL,]