Kom igångKom igång gratis

Validera att användaren har gjort ett val

Som du såg i videon är det ofta bra praxis att ange ett standardvärde för dina väljarinmatningar. Om inget standardvärde ska användas kan du i stället visa ett anpassat felmeddelande som talar om för användarna vad de behöver göra för att appen ska fungera.

I förra övningen såg du att diagrammet helt enkelt var tomt när pickerInput() saknade ett standardvärde. I den här övningen ska du i stället visa ett anpassat felmeddelande som uppmanar användarna att göra det val som krävs för att appen ska fungera.

Den här övningen är en del av kursen

Bygg webbapplikationer med Shiny i R

Visa kurs

Övningsinstruktioner

  • Lägg till ett anpassat felmeddelande som visas som standard och informerar användarna om att de behöver välja ett alternativ för psykisk respektive fysisk hälsa.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

ui <- fluidPage(
  titlePanel("2014 Mental Health in Tech Survey"),
  sidebarPanel(
    sliderTextInput(
      inputId = "work_interfere",
      label = "If you have a mental health condition, do you feel that it interferes with your work?", 
      grid = TRUE,
      force_edges = TRUE,
      choices = c("Never", "Rarely", "Sometimes", "Often")
    ),
    checkboxGroupInput(
      inputId = "mental_health_consequence",
      label = "Do you think that discussing a mental health issue with your employer would have negative consequences?", 
      choices = c("Maybe", "Yes", "No"),
      selected = "Maybe"
    ),
    pickerInput(
      inputId = "mental_vs_physical",
      label = "Do you feel that your employer takes mental health as seriously as physical health?", 
      choices = c("Don't Know", "No", "Yes"),
      multiple = TRUE
    )    
  ),
  mainPanel(
    plotOutput("age")  
  )
)

server <- function(input, output, session) {
  output$age <- renderPlot({
    # MODIFY CODE BELOW: Add validation that user selected a 3rd input
    
    
    
    
    
    

    mental_health_survey %>%
      filter(
        work_interfere == input$work_interfere,
        mental_health_consequence %in% input$mental_health_consequence,
        mental_vs_physical %in% input$mental_vs_physical
      ) %>%
      ggplot(aes(Age)) +
      geom_histogram()
  })
}

shinyApp(ui, server)
Redigera och kör kod