【问题标题】:Hide error message with custom message or reactive button in Shiny App在 Shiny App 中使用自定义消息或反应按钮隐藏错误消息
【发布时间】:2020-08-24 17:13:09
【问题描述】:

当我运行应用程序时,我在默认屏幕上收到错误消息。我不担心应用程序运行时的错误。当我选择输入时,应用运行良好。

我想做的是在默认屏幕上隐藏错误。这是我收到的错误消息:

Error: <text>:2:0: unexpected end of input
1: admit  ~  
   ^

我不想添加按钮来解决这个问题,因为我想让应用保持反应性。但是,如果有一种方法可以添加一个按钮并使其保持反应性,我会喜欢这个主意。

我也愿意在默认屏幕上显示自定义消息,例如“选择因变量和自变量”或类似的内容。

library(shiny)

mydata <- read.csv("https://stats.idre.ucla.edu/stat/data/binary.csv")

ui <- fluidPage(

    sidebarLayout(
        sidebarPanel(
            selectInput("input1", "Dependent Variable", choices = names(mydata)), 
            selectInput("input2", "Independent Variable(s)", choices = names(mydata), multiple = TRUE)
        ),
        mainPanel(
            verbatimTextOutput("output2"),
           verbatimTextOutput("output1")
        )
    )
)

server <- function(input, output) {

    left_vars <- reactive({input$input1})
    
    right_vars <- reactive({
        rights = input$input2
        rights <- paste(rights, collapse=" + ")
        })
   
    log_formula <- reactive({as.formula(paste(left_vars(), " ~ ", right_vars()))})
    
    output$output1 <- renderPrint({summary(glm(formula = log_formula(), data = mydata, family = "binomial"))})
    
    output$output2 <- renderPrint({
        paste(paste0(left_vars(), " ~", right_vars()))
    })  
}

shinyApp(ui = ui, server = server)

【问题讨论】:

标签: r shiny


【解决方案1】:

向反应性术语添加验证可让您使用条件语句编写自定义错误消息。

library(shiny)

mydata <- read.csv("https://stats.idre.ucla.edu/stat/data/binary.csv")

ui <- fluidPage(
  
  sidebarLayout(
    sidebarPanel(
      selectInput("input1", "Dependent Variable", choices = names(mydata)), 
      selectInput("input2", "Independent Variable(s)", choices = names(mydata), multiple = TRUE)
    ),
    mainPanel(
      verbatimTextOutput("output2"),
      verbatimTextOutput("output1")
    )
  )
)

server <- function(input, output) {
  
  left_vars <- reactive({
    validate(
      need(input$input1, "Please enter a dependant variable"))

      input$input1})
  
  right_vars <- reactive({
    validate(
      need(input$input2, "Please enter an independant variable"))
      
    rights = input$input2
    rights <- paste(rights, collapse=" + ")
  })
  
  log_formula <- reactive({as.formula(paste(left_vars(), " ~ ", right_vars()))})
  
  output$output1 <- renderPrint({summary(glm(formula = log_formula(), data = mydata, family = "binomial"))})
  
  output$output2 <- renderPrint({
    paste(paste0(left_vars(), " ~ ", right_vars()))
  })  
}

shinyApp(ui = ui, server = server)

编辑:如果您想知道为什么它会显示两次相同的警告。这是因为你有两个渲染函数,只有选择一个自变量才能完成。

【讨论】:

    猜你喜欢
    • 2017-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-14
    • 2018-11-13
    • 2017-12-26
    • 1970-01-01
    • 2015-09-21
    相关资源
    最近更新 更多