使用validate()为闪亮的UI编写错误消息

时间:2015-10-31 15:32:36

标签: r shiny

我想创建一个带有3个复选框的Shiny UI供用户选择。但是,如果没有选中任何框,我想提示用户输入错误消息。

我已尝试使用validate函数来解决此问题(如下所示),但它目前无法正常工作。任何人都可以指出我的代码有什么问题,并告诉我如何解决它?

shinyUI(fluidPage(sidebarLayout(
  sidebarPanel(checkboxGroupInput(
    "variable", "Select An Option:",
    c(
      "One",
      "Two",
      "Three"
    )
  )),

  mainPanel(textOutput("text"))
)))

shinyServer(function(input, output) {
  text.data <- reactive({
    validate(need(!is.null(input$variable),
  "Please select an option"))
    print(input$variable)
  })
  output$text <- renderPrint({
    print(text.data())
  })
})

修改

我已经包含了以下结果的图片:

  • 当没有选择任何内容时,消息显示在&#34; NULL NULL&#34;而不是&#34;请选择一个选项&#34;

enter image description here

  • 选择框时,会显示以下错误消息:&#34;错误:is.character(txt)不为TRUE&#34;而不是所选输入的打印输出。

enter image description here

1 个答案:

答案 0 :(得分:6)

对于其他人的好处,由于存在命名冲突或屏蔽(因为它是一个常见的函数名称),包问题是validate()函数的常见错误。例如,如果您正在使用qdap或jsonlite软件包,则调用validate()可能无法调用该函数的闪亮版本。

要测试这是否是您的问题,请尝试将validate()替换为shiny::validate()或更改加载库的顺序。