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

dts*_*s86 4 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())
  })
})
Run Code Online (Sandbox Code Playgroud)

编辑

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

  • 如果未选择任何内容,则消息显示为"NULL NULL"而不是"Please select an option"

在此输入图像描述

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

在此输入图像描述

C W*_*C W 10

对于其他好处,validate()由于存在命名冲突或屏蔽(因为它是如此常见的函数名称),包问题是函数的常见错误.例如,如果您正在使用qdap或jsonlite包,那么调用validate()可能不会调用该函数的闪亮版本.

为了测试,如果这是你的问题,请尝试更换validate()shiny::validate()或改变顺序加载存储库.