CommencezCommencez gratuitement

Permettre d'afficher 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é, on peut voir les données par continent. Mais si l'utilisatrice ou l'utilisateur décide finalement de ne pas filtrer par un continent précis et préfère les voir tous? Malheureusement, l'ajout du sélecteur a retiré cette possibilité.

L'argument choices de la fonction selectInput() peut être modifié pour ajouter une autre valeur à la liste des continents et, lorsque cette valeur est choisie, désactiver le filtrage par continent.

Cette activité fait partie du cours

Études de cas : créer des applications Web avec Shiny en R

Voir le cours

Instructions de l’exercice

Ajoutez une option dans le champ de sélection pour choisir "All" continents. Lorsque cette option est sélectionnée, ne faites aucun filtrage par continent. Plus précisément :

  • Ajoutez une valeur "All" à la liste des options fournies au champ de sélection dans l'interface (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 ce code d’exemple.

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)
Modifier et exécuter le code