CommencezCommencez gratuitement

Créer quelques fonctions utilitaires

De nombreux éléments peuvent être ajoutés à un shinydashboard. Pour permettre des interactions entre les entrées de l'utilisateur et les sorties du tableau de bord, vous devez définir ces interactions dans les fonctions render placées dans le serveur.

Le code peut devenir encombrant très vite s'il y a beaucoup d'interactions et de sorties. Une façon de contourner ce problème est de créer vos propres fonctions utilitaires à l'extérieur de l'environnement shinydashboard.

Dans ce qui suit, vous allez construire deux fonctions utilitaires :

  1. num_listings(): renvoie le nombre d'annonces selon les données filtrées dans une plage de price.
  2. make_plots(): crée soit des diagrammes en boîte (boxplots) soit des diagrammes en violon selon la sélection de l'utilisateur, et selon les données filtrées dans une plage de price.

listings est chargé, et sf, tidyverse et leaflet ont été importés.

Cette activité fait partie du cours

Créer des tableaux de bord avec shinydashboard

Voir le cours

Instructions de l’exercice

  • Filtrez listings de façon à le restreindre entre les bornes gauche et droite de l'argument range, qui sert d'alias à une entrée de shinyApp.
  • Définissez les bonnes conditions if-else afin de tracer des diagrammes en boîte lorsque choice correspond à "Box plots", et des diagrammes en violon si c'est "Violin plots".

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

num_listings <- function(range){
  # Filter listings appropriately
  filter(listings, price >= ___, price <= ___) %>% nrow()
}
make_plots <- function(range, choice){
  filtered_listings <- filter(listings, price >= range[1], price <= range[2])
  # Set the correct if-else conditions
  if (choice == ___){
     filtered_listings %>%
      ggplot(aes(y = price, x = room_type)) + geom_boxplot() + theme_classic()
  }
  else if (___){
    filtered_listings %>%
      ggplot(aes(y = price, x = room_type)) + geom_violin() + theme_classic()
}}
Modifier et exécuter le code