繁体   English   中英

Shiny App的条件错误消息

[英]Conditional error messages for Shiny App

我有一个应用程序,您可以在其中输入自己的数据,然后有两个选择输入,用户可以在其中选择其因变量(从输入数据中选择列)和多个自变量。 我要这样做,如果他们从数据中选择一个具有空值的列,则会立即弹出一条错误消息,告诉他们有一个空值。 这是因为如果值为空,则应用程序将无法运行,并在它们按下运行按钮时崩溃。

我的第一个想法是使用validate命令,如下所示:

validate(
 need(is.na(input$yvariable), "Error: null value detected in variable")
 ))  

(input $ yvariable是因变量)

但是,当我应用它时,似乎没有任何作用。 我还尝试使用if-else语句在UI中隐藏帮助文本,但那里也没有运气。 同样,重要的是,一旦他们选择具有任何空值的列,就会弹出错误。 有什么明确的方法可以实现这一目标吗? 有人做过类似的事情吗?

谢谢!

这是您可以用来构建的起始代码。 以下代码使用showModal在缺少值时弹出消息,您可以根据需要自定义此消息。 另一个选项是使用shinyjs::disable在缺少值时禁用“运行”按钮。

  library(shiny)
  ui <- fluidPage(
    uiOutput('inVar'),
    textOutput("textsummary")
  )

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

    df <- mtcars

    df$disp[3:8]<-NA

    observe(print(df[,input$DepVar]))

    output$inVar <- renderUI({
      selectInput(inputId = "DepVar", label = h4("Select variables:"), choices =  colnames(df))
    })

    output$textsummary <- renderText({
      paste("Missing of",input$DepVar, " is ", sum(is.na(df[,input$DepVar])))
    })

    observe({
      if(sum(is.na(df[,input$DepVar]))>0)
      showModal(modalDialog(
        title = "Somewhat important message",
        "This is a somewhat important message.",
        easyClose = TRUE,
        footer = NULL
      ))
    })

  }

  shinyApp(ui, server) 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM