Permettre d’afficher tous les continents ("All")
Avant d’ajouter le sélecteur de continent, l’application Shiny affichait les données pour tous les continents. Maintenant que le sélecteur a été ajouté, les données peuvent être consultées par continent. Mais si l’utilisateur ne souhaite finalement pas filtrer par un continent précis et préfère tout voir ? Malheureusement, l’ajout du sélecteur a supprimé cette possibilité.
L’argument choices de la fonction selectInput() peut être modifié pour ajouter une valeur supplémentaire à la liste des continents, et lorsque cette valeur est choisie, le filtrage par continent peut être désactivé.
Cet exercice fait partie du cours
Études de cas : créer des applications web avec Shiny en R
Instructions
Ajoutez une option dans le select input pour sélectionner tous les continents ("All"). Lorsque cette option est choisie, ne faites aucun filtrage par continent. Plus précisément :
- Ajoutez une valeur "All" à la liste d’options transmise au select input dans l’UI.
- Dans le serveur, utilisez une instruction if pour vérifier si le continent est réglé sur "All". Si "All" est choisi, ne faites aucun filtrage sur les continents (ligne 20).
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
ui <- fluidPage(
h1("Gapminder"),
sliderInput(inputId = "life", label = "Life expectancy",
min = 0, max = 120,
value = c(30, 50)),
# Add an "All" value to the continent list
selectInput("continent", "Continent",
choices = c(___, levels(gapminder$continent))),
tableOutput("table")
)
server <- function(input, output) {
output$table <- renderTable({
data <- gapminder
data <- subset(
data,
lifeExp >= input$life[1] & lifeExp <= input$life[2]
)
# Don't subset the data if "All" continent are chosen
if (___) {
data <- subset(
data,
continent == input$continent
)
}
data
})
}
shinyApp(ui, server)