1 Introduction

Ce document est construit principalement à l’aide des références suivantes :

  • Grolemund and Wickham (2018), Lafaye de Micheaux, Drouilhet, and Liquet (2011), Farnsworth (2008), Charpentier (2014), Paradis (2002), Zuur, Ieno, and Meesters (2009), Goulet (2014)

1.1 Historique

Dans le milieu des années 1970, une équipe de chercheurs de AT&T Bell Laboratories, composée de John Chambers, Douglas Bates, Rick Becker, Bill Cleveland, Trevor Hastie, Daryl Pregibon et Allan Wilks, développe un langage de programmation appelé S (la lettre S faisant référence à statistics). Il s’agit d’un langage permettant de manipuler les données et d’effectuer des analyses statistiques et graphiques. Dans le milieu des années 1990, Ross Ihaka et Robert Gentleman créént le R au département de Statistiques de l’Université d’Auckland. Ce langage et logiciel, inspiré du S et de Scheme est distribué sous les termes de la GNU General Public Licence. La R Development Core Team} se charge de distribuer et de développer le logiciel R. De nombreux contributeurs à travers le monde participent au développement de R.

1.2 Présentation de l’espace de travail

1.2.1 La console et les fenêtres de script

R est un langage interprété, c’est-à-dire qu’il nécessite un interprète pour exécuter les commandes, et n’a pas de phase de compilation. Il existe plusieurs façons de travailler avec R : soit directement dans la console (qui est un interprète), soit dans une fenêtre de script (Fig~1.1). La seconde méthode est fortement conseillée, puisqu’elle permet de sauvegarder le code et d’y accéder facilement pour une utilisation utlérieure. De plus, il existe souvent des raccourcis claviers, en fonction de l’éditeur utilisé, qui permettent de soumettre le code de la fenêtre de script à l’interprète. Les fichiers de code que l’on sauvegardent possèdent l’extension .R.

Fenêtre de script sous Mac OS Catalina

Figure 1.1: Fenêtre de script sous Mac OS Catalina

Console sous Mac OS Catalina

Figure 1.2: Console sous Mac OS Catalina

Dans la console (Fig~1.2), à la fin de l’affichage d’ouverture de session R, se trouve le caractère > (prompt), invitant l’utilisateur•trice à inscrire une commande. Les expressions sont évaluées une fois qu’elle sont soumises (à l’aide de la touche ENTREE) et le résultat est donné, lorsqu’il n’y a pas d’erreur dans le code, juste en dessous :

2+1
## [1] 3

Par la suite, le symbole d’invite de commande ne sera plus affichée dans les cadres de code, afin de permettre au lecteur ou à la lectrice de reproduire facilement les résultats obtenus en copiant et collant les instructions. Par ailleurs, dans ce document, contrairement à ce que l’on peut observer dans la console R, le résultat de l’évalutation de l’expression 2+1 est précédé de deux croisillons. Le croisillon # indique à R de ne pas evaluer le code qui suit, jusqu’à la fin de la ligne. Il permet donc de placer des lignes en commentaires.

# Des commentaires
2+1 # +1
## [1] 3

Lorsqu’on travaille dans une fenêtre de script, la combinaison de touches pour soumettre le code dépend du système d’exploitation et de l’éditeur de texte utilisé (CTRL+R sous Windows, CMD+ENTER sous Mac OS).

1.2.2 Les variables

1.2.2.1 Assignation

De base, le résultat d’une évaluation n’est pas enregistré, et est de fait perdu une fois affiché. Cependant, dans la plupart des cas, il est utile de conserver la sortie dans une variable. Il suffit alors d’attribuer un nom et un contenu à un objet. La flèche d’affectation <- permet cela. L’affichage du contenu de l’objet x se fait en inscrivant son nom et en l’évaluant.

x <- 2+1
x
## [1] 3

Il est possible d’afficher le contenu de l’objet en entourant l’expression de son affectation à une valeur par des parenthèses. La syntaxe est la suivante :

(x <- 2+1)

Comme de nombreux langages de programmation utilisent le symbole = pour assigner une valeur à un objet, cette pratique est permise dans beaucoup de cas en R, mais il arrive qu’elle ne produise pas l’effet escompté dans d’autres cas de figures.

1.2.2.2 Conventions de nommage

Le nom d’une variable doit être composé de caractères alphanumériques ou du point ou du trait de soulignement uniquement. Il ne doit pas commencer par un chiffre ou contenir d’espace, sauf s’il est entouré par des guillemets. Il est important de noter que ces noms sont sensibles à la casse, c’est à dire qu’une distinction entre les majuscules et les minuscules a lieu. Il existe plusieurs pratiques pour nommer des variables, et il n’est pas rare de voir des combinaisons de ces pratiques. Un billet de Robin Lovelace explique les différences entre les méthodes et propose d’en adopter une seule Lovelace (2014) :

  • tout en minuscule : nomvariable ;
  • séparation par un point : nom.variable ;
  • séparation par un trait de soulignement : nom_variable ;
  • lowerCamelCase, avec la première lettre en minuscule : nomVariable ;
  • PascalCase, avec la première lettre en majuscule : NomVariable.

Robin Lovelace propose d’avoir recours aux traits de soulignement, pour la facilité de lecture qu’ils permettent, et par leur emploi par quelques grands noms de la communauté R (comme Hadley Wickham1 ou Yihui Xie2).

1.2.2.3 Les objets en mémoire

Pour lister les éléments de la session R stockés en mémoire de l’ordinateur, il faut appeler la fonction ls() :

ls()
## [1] "x"

1.2.2.4 Modidification, suppression

Il est important de noter que l’assignation du contenu d’un objet à un autre objet permet d’obtenir deux objets distincts. Ainsi, si un des deux objets est modifié, cela n’affecte pas l’autre.

premier_objet <- 2+1
second_objet <- premier_objet # Assigne la valeur de premier_objet
# à second_objet
premier_objet <- 2+2 # Change la valeur de premier_objet
# Puis affiche le contenu des deux objets :
premier_objet # Le résultat doit être 4
## [1] 4
second_objet # Le résultat doit être 3
## [1] 3

Pour supprimer un objet, il faut utiliser la fonction rm() :

premier_objet # L'objet existe
## [1] 4
rm(premier_objet) # Suppression
premier_objet # Son affichage provoque un message d'erreur
## Error in eval(expr, envir, enclos): objet 'premier_objet' introuvable

1.2.3 Les packages

Les fonctions de base de R sont contenues dans un package nommé {base} (lorsque qu"un nom de package sera mentionné dans ces notes, il sera entouré d’accolades). Celui-ci est chargé automatiquement à l’ouverture de R, en même temps qu’une poignée d’autres. Les packages sont des jeux de fonctions, accompagnés de fichiers d’aides, parfois de jeux de données, qui sont mis à disposition des utilisateur•rice•s. La liste des packages chargés en mémoire par défaut s’obtient par l’instruction suivante :

getOption("defaultPackages")
## [1] "datasets"  "utils"     "grDevices" "graphics"  "stats"     "methods"

Les fonctions qui ne sont pas dans les packages en mémoire nécessitent d’être chargées. Mais avant de pouvoir le faire, encore faut-il que le package soit installé. Si ce n’est pas le cas, il suffit de faire appel à l’instruction install.packages(), puis de choisir, selon l’éditeur utilisé, un site miroir. Par exemple, pour installer le package {ggplot2}, qui permet de réaliser des graphiques plus ou moins sophistiqués, l’instruction est la suivante :

install.packages("ggplot2")

Pour charger le package en mémoire et ainsi avoir accès aux fonctions que celui-ci contient, l’instruction est library().

library("ggplot2")

L’instruction require(), qui tente de charger le package et retourne une valeur logique indiquant le succès ou l’échec de l’opération, est utilisée par certains, mais Yihui Xie indique sur un billet publié sur le site R-bloggers Xie (2014) que lors d’un échec du chargement du package en début de fichier, l’emploi des fonctions contenues dans ce package échouera, tout simplement.

require() versus library().

Figure 1.3: require() versus library().

Certains packages ne sont pas disponible sur CRAN (soit ils ne le seront jamais, soit il sont en cours de développement). Ils peuvent en revanche être mis à disposition sur GitHub. Pour installer un package depuis GitHub, on peut faire appel à la fonction install_github() du package {devtools} (il faut au préalable avoir installé {devtool} depuis CRAN). Admettons que le package rJordan à installer depuis GitHub est mis à disposition sur un répertoire de l’utilisateur•trice toto, la syntaxe à respecter est la suivante :

# install.packages("devtools) # Installer devtools si necessaire
devtools::install_github("toto/rJordan")

1.2.4 L’aide

Pour conclure cette introduction, il semble important de mentionner la présence de l’aide en ligne. L’accès aux fichiers d’aide pour une fonction dont on connaît le nom, par exemple la fonction logarithme, peut se faire de plusieurs manières :

?log # Première manière
help(log) # Seconde manière
help("log") # Troisième manière

Pour trouver toutes les fonctions dont le nom contient une cha^iine de cractètres donnée, on peut utiliser la fonction apropos() :

apropos("log")
##  [1] "annotation_logticks"   "as.data.frame.logical" "as.logical"           
##  [4] "as.logical.factor"     "col_logical"           "dlogis"               
##  [7] "GeomLogticks"          "is_bare_logical"       "is_logical"           
## [10] "is_scalar_logical"     "is.logical"            "log"                  
## [13] "log10"                 "log1p"                 "log2"                 
## [16] "logb"                  "Logic"                 "logical"              
## [19] "logLik"                "loglin"                "parse_logical"        
## [22] "plogis"                "qlogis"                "read_log"             
## [25] "rlogis"                "scale_x_log10"         "scale_y_log10"        
## [28] "SSlogis"               "tidyverse_logo"        "tokenizer_log"

Les fichiers sont souvent riches d’informations, très bien décrits, et proposent des exemples d’utilisation.

Par ailleurs, la communauté R est importante, et rares sont les questions sans réponses sur les mailing-lists ou les pages de Stack Overflow}. Si vous n’arrivez pas à résoudre un problème après avoir parcouru StackOverflow, vous pouvez toujours y poser une question pour que la communauté tente de vous aider. Vous pouvez également rejoindre le groupe de discussion des utilisateur•rice•s de R francophones sur Slack : Grrr. Dans les deux cas, pour permettre aux autres de vous aider : proposez un exemple reproductible. Pour ce faire, veuillez consulter par exemple ce tutoriel. N’hésitez pas à suivre les résolutions de problèmes des autres, cela favorise l’apprentissage de techniques efficaces et fais progresser la pratique du langage.

1.3 Un environnement de développement : RStudio

Bien qu’il soit possible d’utiliser R via le terminal, ou via l’éditeur installé par défaut, il est également possible d’utiliser un environnement de développement, comme RStudio. La version desktop, gratuite et en open source, est téléchargeable à l’adresse suivante : https://www.rstudio.com/.

Pour utiliser RStudio, il est nécessaire d’avoir au préalable installé R.

La figure ci-dessous montre l’interface graphique proposée par RStudio. Cette interface est composée de quatre panneaux : un éditeur, une console, une fenêtre historique et environnement, et une dernière avec divers onglets (fichiers, graphiques, packages, aide et un navigateur interne).

Interface graphique de RStudio.

Figure 1.4: Interface graphique de RStudio.

On peut noter que RStudio dispose d’un colorateur syntaxique et propose l’auto-complétion (à l’aide de la touche TAB).

References

Charpentier, Arthur. 2014. Computational Actuarial Science with R. Chapman; Hall.

Farnsworth, Grant V. 2008. “Econometrics in R.” http://cran.r-project.org/doc/contrib/Farnsworth-EconometricsInR.pdf.

Goulet, Vincent. 2014. Introduction à La Programmation En R. http://cran.r-project.org/doc/contrib/Goulet_introduction_programmation_R.pdf.

Grolemund, Garrett, and Hadley Wickham. 2018. R for Data Science. O’Reilly Media, Incorporated.

Lafaye de Micheaux, P., R. Drouilhet, and B. Liquet. 2011. Le Logiciel R: Maîtriser Le Langage - Effectuer Des Analyses Statistiques. Statistique et Probabilités Appliquées. Springer.

Lovelace, Robin. 2014. “Consistent Naming Conventions in R.” http://robinlovelace.net/r/2014/07/15/naming-conventions-r.html.

Paradis, Emmanuel. 2002. “R Pour Les débutants.” http://cran.r-project.org/doc/contrib/Paradis-rdebuts_fr.pdf.

Xie, Yihui. 2014. “Library() Vs Require() in R. R-Bloggers.” http://www.r-bloggers.com/library-vs-require-in-r/.

Zuur, Alain, Elena N Ieno, and Erik Meesters. 2009. A Beginner’s Guide to R. Springer.