Valida que la persona usuaria haya hecho una selección
Recuerda del vídeo que, aunque a menudo es buena práctica establecer un valor por defecto para tus selectores, si hay que excluirlo, puedes mostrar un mensaje de error personalizado que indique a las personas usuarias qué hacer para que la app funcione correctamente.
Vimos en el ejercicio anterior que, sin un valor por defecto para pickerInput(), el gráfico aparece en blanco. En este ejercicio, en lugar de un gráfico en blanco, mostrarás un mensaje de error personalizado indicando que deben hacer la selección correcta para que la app funcione.
Este ejercicio forma parte del curso
Creación de aplicaciones web con Shiny en R
Instrucciones del ejercicio
- Añade un mensaje de error personalizado que se muestre por defecto indicando a las personas usuarias que deben seleccionar una entrada para salud mental frente a salud física.
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
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)