library(learnr)
library(knitr)
knitr::opts_chunk$set(echo = TRUE)

Premières conversations runiques

Bienvenue dans ce premier chapitre du grimoire IGoR. Au cours de ce chapitre, nous allons progressivement :

En cas de besoin, n'hésitez pas à solliciter un animateur circulant dans la salle.

Mais commençons... par le commencement ! R est un langage utilisé pour le traitement de données statistiques, dont la première version a été publiée en 2000. D'abord diffusé parmi les chercheurs, R est aujourd'hui de plus en plus utilisé au sein des Instituts nationaux de statistiques.

R permet de faire des calculs statistiques, de les restituer sous forme de tableaux et également de tracer des graphiques et des cartes géographiques. Les résultats produits dans R peuvent être exportés dans des rapports et même être intégrés dans des applications web en ligne. Maîtriser le langage des Runes est un grand pouvoir ~qui implique de grandes responsabilités~ !

À la différence d'autres logiciels comme SAS, R est un logiciel libre : sa licence d'utilisation est gratuite et autorise chaque utilisateur à accéder, modifier ou redistribuer son code source. Le code source est l'équivalent du mode d'emploi pour la fabrication du logiciel. Il est aussi multi-plateforme : cela signifie qu'il peut être executé sur plusieurs systèmes d'exploitation (Windows, Mac, Linux...)

Des Quiz tu triompheras

Dans l'aventure d'icaRius, vous serez parfois amené(e) à répondre à des quiz pour aider le personnage à poursuivre sa quête. En voici un tout premier, histoire de se familiariser avec le format de l'exercice. À vous donc de répondre directement en cochant votre choix puis en appuyant sur le bouton qui s'intitule Submit answer (envoyer la réponse).

À ce sujet, vous croiserez de temps à autre quelques mots étranges issus de la langue de Shakespeare. Le langage runique emprunte en effet quelques termes à nos voisins grands brittons... Mais le grimoire vous proposera toujours la traduction dans la langue - infiniment plus mélodieuse - de Molière...

En cas de besoin sur le mode de fonctionnement, n'hésitez pas à solliciter un animateur circulant dans la salle.

quiz(
  question("Qu'est-ce que R ne fait PAS ?",
    answer("de très beaux graphiques"),
    answer("des calculs statistiques"),
    answer("de très belles cartes géographiques"),
    answer("le café", correct = TRUE),
    answer("des applications web")
  ),
  question('Que signifie "logiciel libre" ?',
    answer("un logiciel libre est un logiciel sauvage, on ne le trouve pas à l'état domestique"),
    answer("un logiciel libre est un logiciel qui autorise librement l'utilisation, l'étude, la modification et la redistribution", correct = TRUE),
    answer("un logiciel libre est un logiciel qu'on a vu voler")
  )
)

Premiers pas dans la console

Vous pourriez penser que nous allons vous proposer une "console" de jeux vidéo. Malheureusement, ce n'est pas tout à fait le cas. Nous parlerons dans le grimoire de console pour désigner une partie de l'écran où vous pourrez vous-même vous exercer à pratiquer le langage des Runes - autrement dit, à écrire vous-mêmes du R et à en voir le résultat. C'est donc une console R !

Sous ces lignes se trouve une console R et, à la manière d'une calculatrice, il est possible de lui demander de réaliser des calculs : tapez ci-dessous, dans la console, un calcul tel que 2 + 2 (c'est tout de même plus dur que 1 + 1). Appuyez ensuite sur le bouton en haut à droite de la console pour faire executer le code (run code signifie exécuter le code). La réponse de votre calcul s'affichera alors en dessous de la console.


R répond 4 et heureusement ! À l'avenir nous allons lui faire faire des choses beaucoup plus compliquées...

R a ses tics, comme tout le monde. Ici, son tic de langage, c'est d'afficher la valeur d'un objet en commençant par quelque chose comme [1]. Un peu comme quelqu'un qui commencerait toujours ses phrases par "en fait" (ou "euh" selon la préciosité de son langage).

Exercez-vous...

Voici une console un peu plus grande qui contient des instructions pré-remplies, exécutez-les toujours avec le bouton pour voir comment R structure sa réponse à votre sollicitation :

3 + 3
3+3
12345678 * 4

La console est un lieu de dialogue, vous commandez et R s'exécute ! Notez que vous voyez apparaître tous les résultats les uns à la suite des autres (par exemple, il y a 3 calculs demandés ici séparément, et R vous répond bien par 3 résultats) : il y a donc une réponse par instruction passée.

Dans la façon d'écrire le langage des Runes, le nombre d'espaces est sans importance : 3 + 3, 3+3 , c'est du pareil au même.

Chaque langage a sa façon de comprendre des opérations mathématiques. Pour les fondamentaux, R utilise + pour les additions et - pour les soustractions (jusqu'ici tout va bien), mais aussi * pour la multiplication et / pour la division.

Essayez quelques calculs, librement et par vous-même :


Mettre un peu d'ordre dans R

Créer un objet

Pour aller plus loin qu'une simple calculatrice, R permet de garder en mémoire tous les calculs que vous lui demandez d'exécuter, et de conserver aussi le résultat de ces calculs. Pour s'y retrouver dans cette gigantesque mémoire, un peu d'organisation s'impose !

Dans R, l'information peut être rangée dans ce nous appellerons des objets : pour donner une image, un objet c'est comme une boite sur laquelle on peut apposer une étiquette (un nom) et dans laquelle on range un contenu (le résultat d'un calcul par exemple). Le fait de donner des noms aux objets permet de mieux s'y retrouver dans des longs calculs.

Par exemple, nous allons créer un objet dont le nom est nb_coeur, qui servira à stocker la valeur relative au nombre de coeurs du héros dans le jeu. Icarius démarre la partie avec 3 coeurs, la valeur que nous voulons donner à nb_coeurs est donc 3. Pour ranger la valeur 3 dans l'objet appelé nb_coeur, le langage runique comporte un signe bien particulier, à savoir la flèche <-. Elle est construite en juxtaposant le signe < au tiret -. Attribuer une valeur à un objet par une flèche <- correspond à la notion d'assignation. Par exemple :

# Je crée l'objet nb_coeur (nombre de coeurs du héros)
# en lui assignant la valeur 3
nb_coeur <- 3

Le code ci-dessus assigne la valeur 3 à l'objet nb_coeur. Vous noterez que la flèche utilisée pour assigner est orientée de droite à gauche : elle va de la valeur (ici 3) à l'objet qui recueille la valeur (ici nb_coeur).

Au fait, dans R, tout ce qui apparaît après un # sert de commentaire : R ne lit pas ces lignes (qui apparaissent dans une autre couleur). Cela vous permet d'annoter le code pour le documenter, comme dans ce tutoriel.

L'objet nb_coeur a été créé. Pour afficher son contenu dans R, il suffit... de taper son nom :

# Affichage de la valeur d'un objet en tapant son nom
nb_coeur

Calculer avec des objets

Les objets peuvent être utilisés dans des opérations de multiple nature, à commencer par du calcul sur des valeurs numériques. Nous allons ainsi multiplier l'objet nb_coeur par 2. Nous l'avons vu, la multiplication dans R s'écrit avec la touche *

# Une opération arithmétique sur l'objet nb_coeur
2*nb_coeur

Il est possible de créer un nouvel objet à partir d'un objet existant et d'une opération comme un calcul. Par exemple, nous allons créer l'objet max_nb_coeur pour désigner le nombre maximum de coeurs que le héros aura dans l'aventure. Ici,

# Une opération arithmétique qui est associée à la création d'un nouvel objet,
# max_nb_coeur, pour désigner le nombre maximum de coeurs du héros
max_nb_coeur <- 2*nb_coeur
# Affichage de la valeur de max_nb_coeur
max_nb_coeur

A vous de pratiquer

Nous vous proposons de créer ci-dessous les variables nb_coeur et max_nb_coeur, en leur assignant respectivement les valeurs 3 et 6, puis d'afficher leur valeur. Au fait, une astuce : dans la console R, vous pouvez également afficher la solution pour avoir une aide avec le bouton :

knitr::include_graphics("images/solution.png")
# Création des variables nb_coeur et max_nb_coeur


# Affichage de leur valeur


# Fin de l'exercice
# Création des variables nb_coeur et max_nb_coeur
nb_coeur<-3
max_nb_coeur<-2*nb_coeur
# Affichage de leur valeur
nb_coeur
max_nb_coeur
# Fin de l'exercice

Des objets préchargés

Pour vous aider dans votre quête, le langage des Runes comporte déjà quelques "objets" déjà rangés à l'avance. Par exemple, la valeur de pi est stockée dans l'objet pi.

# Afficher la valeur de pi dans R
pi

Parlons un instant des décimales. Vous avez l'habitude d'utiliser une virgule pour indiquer les décimales dans un nombre, non ? Comme 3,1415 pour pi ? Certes, mais les pays anglophones ont choisi le point comme séparateur décimal, et c'est cette convention que l'on retrouve dans les langages comme R. C'est pour cela que R affiche 3.14 et non 3,14. Il vous faudra vous plier à cette règle dans votre apprentissage du langage des Runes sous peine de vous faire rouspeter par la console.

L'âge des statisiens

wzxhzdk:13 **Mais au fait, il nous reste à répondre à la question du mage RegoR... quel âge a icaRius ? **

Dans le monde de Statis, l'âge suit une logique un peu étrange. À la naissance, les statisiens ont pour âge leur nombre de coeurs multiplié par le nombre pi au carré, auquel on soustrait le nombre maximal de coeurs qu'ils pourront avoir au cours de leur vie... Pour faciliter le tout, on admettra de prendre l'arrondi du résultat obtenu...

Aie aie aie.

Tiens, et si on calculait avec R ? Pour calculer le carré d'un nombre dans R, on utilise le signe ^, comme par exemple 3^2 = 9.

# La valeur de pi au carré. Pour porter un chiffre à la puissance N, on utilise ^N
pi^2

Ecrivons la formule de calcul pour l'âge d'IcaRius. Allons-y pas-à-pas.

# le nombre de coeur multiplié par le nombre pi au carré...
nb_coeur * pi^2

# ... moins le nombre maximal de coeur
nb_coeur * pi^2 - max_nb_coeur

# Et c'est déja fini !

Pas sorcier finalement. Comme quoi, cette histoire de "mage" dans icaRius, c'est très surfait.

À vous de jouer !

Et si vous écriviez vous-mêmes la solution pour trouver l'âge d'IcaRius ? Ecrivez ci-dessous votre calcul, exécutez-le pour trouver l'âge... Rappel : l'exécution du code se fait en appuyant sur le bouton :

knitr::include_graphics("images/run_code.png")
# Les objets nb_coeur et max_nb_coeur sont déjà chargés
nb_coeur <- 3
max_nb_coeur <- 2*nb_coeur
# Ecrire la formule de calcul de l'âge des statisiens

# Fin de l'exercice
# Les objets nb_coeur et max_nb_coeur sont déjà chargés
nb_coeur <- 3
max_nb_coeur <- 2*nb_coeur
# Ecrire la formule de calcul de l'âge des statisiens
(nb_coeur * pi^2) - max_nb_coeur
# Fin de l'exercice

À noter que l'on pourrait aller plus loin en calculant dans R l'arrondi du résultat obtenu. Mais nous verrons cela plus tard : pour l'instant, à vous de faire cet arrondi... de tête !

question("Alors, quel âge a Icarius? Ne reste plus qu'à cocher la bonne réponse...pour poursuivre l'aventure!",
type="single",
allow_retry = TRUE,
incorrect="Retente ta chance",
answer("18 ans"),
answer("36 ans"),
answer("24 ans",correct=TRUE),
answer("La bonne réponse n'est pas dans les propositions"),
correct="Félicitations, tu as trouvé le bon âge, l'aventure peut continuer! Reporte directement dans le jeu icaRius (via l'écran bleu) la bonne valeur pour débloquer la suite."
)

Fin du chapitre 1 >> reprenez la partie d'Icarius

(Version du chapitre : 0.9.1)



InseeFrLab/funcamp-r-grimoire documentation built on Oct. 30, 2023, 3:25 p.m.