library(learnr) library(parsons) library(knitr) library(rio) knitr::opts_chunk$set(echo = FALSE) library(tidyverse) library(skimr) file.copy(from = system.file(package = "funcampR","data","chapitre3/recensement_agricole_statia_Tellus.ods"), to = paste0(tempdir(),"/recensement_agricole_statia_Tellus.ods")) file.copy(from = system.file(package = "funcampR","data","chapitre3/recensement_agricole_statia_Galia.ods"), to = paste0(tempdir(),"/recensement_agricole_statia_Galia.ods"))
# relative path to data from "local random repo" of learnr exercise fichier_tellus<-import(paste0(tempdir(),"/recensement_agricole_statia_Tellus.ods")) fichier_galia<-import(paste0(tempdir(),"/recensement_agricole_statia_Galia.ods"))
Un bon mage est appelé à évoquer de multiples sortilèges, qu'il va combiner pour accroître son pouvoir. De même, dans la langue des Runes, les sortilèges peuvent se conjuguer les uns les autres, c'est-à-dire être associés dans un ordre qui vous permettra d'obtenir l'effet escompté. La conjugaison des sortilèges se fonde sur un étonnant symbole : le pipe (prononcez "paille-peu"), représenté par les lettres %>%
. On l'invoque en juxtaposant %, > et % côte-à-côte.
knitr::include_graphics("images/symbole_pipe.png")
Le pipe est un opérateur qui facilite l'enchaînement de sortilèges sur un fichier de données. Le signe %>% peut être lu comme "ensuite". Ainsi, si on utilise cet opérateur :
skim(mon_fichier) # EST EQUIVALENT A : mon_fichier %>% skim()
Le sortilège se trouvant immédiatement à la droite du %>% utilise comme objet en entrée l'élement se trouvant à la gauche du %>%. En langue vernaculaire, cela donne: "Je prends mon fichier de données et ensuite je calcule les indicateurs statistiques sur l'ensemble des variables de ce fichier."
On peut également choisir de ne s'intéresser qu'à une seule des variables du fichier comme nous l'avions fait au chapitre précédent :
skim(mon_fichier,nom_variable) # EST EQUIVALENT A : mon_fichier %>% skim(nom_variable)
Si on traduit, cela donne: "Je prends mon fichier de données et ensuite je calcule les indicateurs statistiques sur la variable selectionnée dans ce fichier"
Continuons l'exploitation du fichier des fermiers Tellus et Galia avec le sortilège skim()
:
# Le livre de récolte est déjà chargé, avec le nom fichier_tellus # En utilisant le %>% et le sortilège skim(), # calculer les statistiques descriptives sur toutes les variables # fin de l'exercice
# Le livre de récolte est déjà chargé, avec le nom fichier_tellus # En utilisant le %>% et le sortilège skim(), # calculer les statistiques descriptives sur toutes les variables fichier_tellus %>% skim() # fin de l'exercice
Et maintenant passons au fichier du fermier Galia :
# Le livre de récolte est déjà chargé, avec le nom fichier_galia # En utilisant le %>% et le sortilège skim(), # calculer les statistiques descriptives sur la variable Litres # fin de l'exercice
# Le livre de récolte est déjà chargé, avec le nom fichier_galia # En utilisant le %>% et le sortilège skim(), # calculer les statistiques descriptives sur la variable Litres fichier_galia %>% skim(Litres) # fin de l'exercice
Grace à Icarius, le conflit est résolu, et l'humble Galia est désormais reconnu comme le meilleur cultivateur de Mandragore. Tous sont maintenant curieux de connaitre le sortilège utilisé par Galia pour y arriver. Utiliserait-il les produits de la magie noire (qu'on appelle les biotues dans le monde agricole de Statia) ?
"Vous n'y êtes pas, chers compagnons. Voyons, il est temps pour moi de partager ma recette avec vous".
Dans le monde de Statia, le pipe permet de produire des enchainements de sortilèges... comme de composer toutes les étapes d'une recette. Mais attention : pour qu'une recette soit un succès, encore faut-il suivre les étapes dans le bon ordre. Il en va de même pour un bon sortilège...
Imaginez Sylvain, un cuisinier du dimanche qui veut faire du pain, voilà la recette telle qu'il la trouvera sur maRmiton, la célèbre bibliothèque de cuisine : prends la farine, ensuite ajoute le sel, ensuite ajoute la levure, ensuite ajoute l'eau, ensuite mélange le tout, ensuite laisse reposer la pate réalisée, enfin met au four pendant 13 minutes à 240°C.
En langage des Runes, la même recette s'écrira de la façon suivante :
farine %>% ajouter(sel) %>% ajouter(levure) %>% ajouter(eau) %>% melanger() %>% laisser_reposer() %>% mettre_au_four(température = 240°C,temps = 13minutes)
Le sortilège invoqué dans le langage des Runes comme une transcription littérale de la recette moyennant l'utilisation du %>%
Vous avez compris la magie du pipe ? A vous de jouer !
Tellus a bien fourni son secret, mais dans le désordre. Recomposons les étapes comme il convient. Voici quelques indices :
Une conjugaison de sortilèges doit d'abord commencer par l'objet sur lequel débute l'enchainement de sortilèges. Ici, l'objet par tout commence, c'est le champ dans lequel on cultive la Mandragore...
N'oubliez pas : Galia n'utilise pas de magie noire, donc pas de biotues
Ne vous laissez pas embrouiller par le terrible SaSSoS et sa langue serpentine - pas de set
ou de run
dans la langue des Runes.
Le meilleur moment pour arroser une terre, c'est quand elle vient d'être labourée puis semée.
Les coccinelles sont les amies des Mandragore, c'est bien connu !
Les coccinelles aiment que la terre soit humide...
A la toute fin, il n'y a plus qu'à récolter...
Saurez-vous remettre les étapes dans l'ordre ?
question_parsons( initial = c( "champ %>%", "data champ;set champ;run;", "semer() %>%", "arroser() %>%", "ajouter(coccinelles) %>%", "labourer() %>%", "ajouter(biotues) %>%", "recolter()" ), pass_if( c( "champ %>%", "labourer() %>%", "semer() %>%", "arroser() %>%", "ajouter(coccinelles) %>%", "recolter()" ), message = "Bravo vous êtes des champions de la culture de la mandragore! Rentrez le code 777 dans le jeu icaRius pour continuer l'aventure" ), pass_if( c( "champ %>%", "labourer() %>%", "semer() %>%", "ajouter(coccinelles) %>%", "arroser() %>%", "recolter()" ), message = "Bravo vous êtes des champions de la culture de la mandragore! Rentrez le code 777 dans le jeu icaRius pour continuer l'aventure" ), pass_if( c( "champ %>%", "labourer() %>%", "ajouter(coccinelles) %>%", "semer() %>%", "arroser() %>%", "recolter()" ), message = "Bravo vous êtes des champions de la culture de la mandragore! Rentrez le code 777 dans le jeu icaRius pour continuer l'aventure" ), fail_if( ~length(.) < 2, message = "Inclure au moins deux verbes" ), fail_if( ~{.[1] != "champ %>%"}, message = "Votre solution doit commencer par 'champ %>%'" ) )
Vous avez trouvé ? L'exercice ci-dessus vous apportera la réponse à reporter dans le jeu icaRius
version 0.9.3
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.