3. Utiliser R
3.1. Exécuter des commandes R
On peut exécuter des commandes R dans 2 modes différents:
R étant un langage interprété, les instructions peuvent être entrées directement dans la console de RStudio. Cette façon de faire est intéressante pour vérifier le comportement d’une fonction élémentaire ou pour exécuter des tâches brèves.
on peut également grouper les instructions dans un fichier
.R
avec l’éditeur de texte de RStudio (ou un autre) et exécuter la totalité des instructions en une seule opération, via la commandesource()
.
3.2. Obtenir de l’aide
Le temps consacré à ce cours ne permet pas de devenir un R guru et il fait partie du processus de développement de faire appel à internet.
3.2.1. Aide intégrée
Pratique, la documentation de R est disponible via l’onglet Help
de RStudio et son module de recherche.
3.2.2. Ressources externes
La recherche sollicitant des ressources externes doit explicitement mentionner le nom du package tidyverse
lorsqu’on le connait, et a minima l’écosystème tidyverse
lui même lorsqu’on ne le connait pas.
Le site StackOverFlow comporte généralement des réponses complètes et argumentées.
3.3. Commandes R
Une instruction élémentaire de R consiste en une expression, que l’on affecte ou pas à une variable.
Ceci est une expression:
> library(tidyverse) # "import" des packages de Tidyverse
> starwars %>% filter(species == "Droid")
# A tibble: 6 x 14
name height mass hair_color skin_color eye_color birth_year sex gender homeworld species films
<chr> <int> <dbl> <chr> <chr> <chr> <dbl> <chr> <chr> <chr> <chr> <lis>
1 C-3PO 167 75 NA gold yellow 112 none mascu… Tatooine Droid <chr…
2 R2-D2 96 32 NA white, bl… red 33 none mascu… Naboo Droid <chr…
3 R5-D4 97 32 NA white, red red NA none mascu… Tatooine Droid <chr…
4 IG-88 200 140 none metal red 15 none mascu… NA Droid <chr…
5 R4-P… 96 NA none silver, r… red, blue NA none femin… NA Droid <chr…
6 BB8 NA NA none none black NA none mascu… NA Droid <chr…
# … with 2 more variables: vehicles <list>, starships <list>
Cette expression est évaluée, affichée mais le résultat n’est plus accessible.
Pour réutilisation ultérieure, on peut affecter le résultat de l’évaluation d’une expression à une variable, et dans ce cas le résultat n’est pas affiché:
> d <- starwars %>% filter(species == "Droid")
On peut placer plusieurs commandes sur la même ligne en les séparant avec un ;
:
> d <- starwars %>% filter(species == "Droid") ; class(d)
[1] "tbl_df" "tbl" "data.frame"
Les accolades {
et }
sont utilisées pour définir des blocs de commandes dans Les fonctions, Instructions groupées et structures de contrôle, etc…
Les commentaires sont identifiés par le caractère #
qui permet d’ignorer tout ce qui suit.
Si une commande est incomplète, un prompt secondaire +
est affiché sur les lignes suivantes, jusqu’à ce que la commande soit syntaxiquement correcte.
> starwars %>%
+ filter(species == "Droid")
# A tibble: 6 x 14
name height mass hair_color skin_color eye_color birth_year sex gender homeworld species films
<chr> <int> <dbl> <chr> <chr> <chr> <dbl> <chr> <chr> <chr> <chr> <lis>
1 C-3PO 167 75 NA gold yellow 112 none mascu… Tatooine Droid <chr…
2 R2-D2 96 32 NA white, bl… red 33 none mascu… Naboo Droid <chr…
3 R5-D4 97 32 NA white, red red NA none mascu… Tatooine Droid <chr…
4 IG-88 200 140 none metal red 15 none mascu… NA Droid <chr…
5 R4-P… 96 NA none silver, r… red, blue NA none femin… NA Droid <chr…
6 BB8 NA NA none none black NA none mascu… NA Droid <chr…
# … with 2 more variables: vehicles <list>, starships <list>
Important
En R, <-
est l’opérateur d’affectation. Plus de détails ultérieurement.
3.4. Exécuter les commandes contenues dans un fichier
Lors de la phase de conception du process de traitement des données, il est pratique de travailler en mode interactif à partir de la console R. Lorsque les instructions sont regroupées dans un fichier, on exécute celles ci avec la commande source:
> source("commands.R")
3.5. Stockage des résultats
On peut intercepter les résultats des commandes, avec la fonction sink()
. Tous les affichages sont redirigés vers un fichier texte:
> sink("result.txt")
> starwars %>% filter(species == "Droid")
On rétablit l’affichage dans la console avec sink()
:
> sink()
> starwars %>% filter(species == "Droid")
# A tibble: 6 x 14
name height mass hair_color skin_color eye_color birth_year sex gender homeworld species films
<chr> <int> <dbl> <chr> <chr> <chr> <dbl> <chr> <chr> <chr> <chr> <lis>
1 C-3PO 167 75 NA gold yellow 112 none mascu… Tatooine Droid <chr…
2 R2-D2 96 32 NA white, bl… red 33 none mascu… Naboo Droid <chr…
3 R5-D4 97 32 NA white, red red NA none mascu… Tatooine Droid <chr…
4 IG-88 200 140 none metal red 15 none mascu… NA Droid <chr…
5 R4-P… 96 NA none silver, r… red, blue NA none femin… NA Droid <chr…
6 BB8 NA NA none none black NA none mascu… NA Droid <chr…
# … with 2 more variables: vehicles <list>, starships <list>
3.6. Persistence des données
Les structures que R crée et manipule en mémoire s’appelent des objets dans le vocabulaire R, bien qu’il n’y ait (presque) aucune similitude avec les objets des langages orientés objet (Python, Java, etc…).
Dans R Studio ces objets sont présentés (par ordre alphabétique) dans l’onglet « Environment », avec une brève description. On peut les afficher sous la forme d’une simple liste dans la console avec la fonction objects()
or ls()
. La collection des objets présents en mémoire s’appelle l’espace de travail.
> objects()
[1] "d"
> ls()
[1] "d"
Pour retirer un ou plusieurs objets de l’environnement, on utilise la fonction rm()
:
> rm(d)
> ls()
character(0)
La fonction rm()
accepte également un vecteur en paramètre. Si celui ci est initialisé avec la liste de tous les objets, ils sont tous détruits:
> rm(list = ls())
Tous les objets créés durant une session R peuvent être stockés sur le disque pour réutilisation ultérieure. Lorsqu’on tente de fermer une session, la possibilité de sauvegarder ces objets est proposée. Si on répond par l’affirmative, ils sont stockés dans le fichier .RData
dans le répertoire courant.
L’ensemble des commandes utilisées au cours de la session est stocké dans le fichier .Rhistory
.
Si ces fichiers sont présents, ils sont utilisés au redémarrage d’une nouvelle session.
Important
Pour une bonne structuration du travail, il est très fortement recommandé de créer un répertoire distinct pour chaque projet, chaque étude.
3.7. Manipuler les fichiers et les répertoires
L’IDE R Studio propose une interface de manipulation des fichiers et des répertoires mais il peut être nécessaire d’y accéder via la console. Dans ce cadre getwd()
retourne le chemin du répertoire courant:
> getwd()
[1] "C:/Users/courivad/Documents"
et setwd()
est utilisée pour changer de répertoire:
> setwd('C:\\dir1\\dir2') # (Windows only)
> setwd('C:/dir1/dir2') # (Windows & Linux)
> setwd(file.path('C:', 'dir1', 'dir2')) # (Windows & Linux)::
> setwd("c:/Users/courivad/Documents/R")
> getwd()
[1] "c:/Users/courivad/Documents/R"
La fonction dir()
retourne le contenu du répertoire courant (fichiers et répertoires), et list.dirs()
retourne le contenu du répertoire courant (uniquement les répertoires)