Sprawdź, czy użytkownik dokonał wyboru
Jak pokazano w filmie, dobrą praktyką jest ustawianie domyślnej wartości dla pól wyboru. Jeśli jednak chcesz ją wykluczyć, możesz wyświetlić użytkownikowi niestandardowy komunikat błędu, który podpowie mu, co należy zrobić, aby aplikacja działała poprawnie.
W poprzednim ćwiczeniu widziałeś, że bez domyślnej wartości w pickerInput() wykres jest po prostu pusty. W tym ćwiczeniu zamiast pustego wykresu wyświetlisz użytkownikom niestandardowy komunikat z informacją o tym, jakiego wyboru należy dokonać.
To ćwiczenie jest częścią kursu
Tworzenie aplikacji internetowych z Shiny w R
Instrukcje do ćwiczenia
- Dodaj niestandardowy komunikat błędu, który będzie wyświetlany domyślnie i poinformuje użytkowników, aby wybrali dane dotyczące zdrowia psychicznego lub fizycznego.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
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)