Le langage R

Généralités sur R

Depuis sa naissance en Nouvelle-Zélande dans les années 90, R est devenu le langage de programmation incontournable des statistiques et de l‘analyse de données. Il suffit de parcourir les offres d’emploi pour s’en convaincre.

Nous présenterons succinctement R en ajoutant quelques comparaisons avec Python

 

Présentation

Contrairement à d’autres langages plus généralistes, R est spécifique à un domaine. Celui de l’analyse de données.

Il a été créé par Ross Ihaka et Robert Gentleman à l’université d’Aukland. Il est gratuit et publié sous licence GNU. Comme Python, sa base est enrichie de centaines de packages ou bibliothèques. Tout utilisateur averti peut donc ajouter un package de son cru qui remplirait de nouvelles fonctionalités.

C’est un langage interprété qui fonctionne avec les systèmes d’exploitation Windows, Mac OS X et Linux.

R peut être employé de trois façons : avec son interface d’origine, avec un environnement intégré (RStudio est le plus connu des EDI et c’est celui que nous utilisons) ou avec une interface plus classique, à l’instar des logiciels du commerce, mais aux possibilités réduites.

L’interface d’origine n’est pas conseillée, bien qu’elle soit tout de même plus élaborée que la console de Python.

Non seulement R est un excellent outil pour effectuer les calculs statistiques les plus savants mais aussi pour réaliser de nombreux types de graphiques. Certes, dans la version de base ils sont moins esthétiques que ceux d’Excel ou de Tableau mais pour l’analyste qui souhaite juste y voir clair dans ses données, ce détail n’a guère d’importance.

R n’est donc pas qu’un langage.

Enfin, il existe une communauté d’utilisateurs très vaste et active sur les forums. Le programmeur n’est pas livré à lui-même ! Exemple (anglophone) :

https://www.reddit.com/r/Rlanguage/?rdt=51960

 

Installation

Une page à partir de laquelle vous pouvez télécharger R :

https://cran.r-project.org/mirrors.html

Le CRAN (Comprehensive R Archive Network) est le site de référence de R, sur lequel on peut télécharger ses packages, dûment référencés.

L’utilisation d’un EDI est très pratique. Vous avez le choix. Visual Studio Code et Pycharm, par exemple, supportent aussi bien R que Python.

Mais RStudio est dédié à R et il reste le plus employé.

https://www.r-studio.com/fr/

Ce bel outil suppose que vous avez une appétence pour le code. Si au contraire vous êtes allergique, vous pouvez télécharger l’interface graphique RKWard (non décrite sur ce site).

https://rkward.kde.org/Download_RKWard.html

 

Objets et classes

R est un langage orienté objet. Qu’est-ce qu’un objet ? C’est un concept assez proche de celui de variable mais ce n’est pas tout à fait la même chose. Un objet est une instance de classe qui combine la donnée (l’attribut) et la fonction qui agit dessus.

Il est créé à partir d’une classe. En R, elles sont « numeric », « logical », « character »... Nous n’aborderons pas ici les subtilités. Un objet se caractérise aussi par sa longueur et bien sûr son contenu. Avec R, il n’est pas nécessaire de le déclarer en le typant.

Il existe des objets simples, par exemple un même taux de TVA appliqué à de nombreux produits. Ils ne représentent pas le « cœur de métier » de R ! Exemple d’un taux de TVA à \(20\%\) :

tva <- 0.2

Les classes qui méritent un développement dans des pages spécifiques de ce site sont les suivants :

  • Les vecteurs sont des objets composés d’éléments de même type. R est fondé sur la notion mathématique de vecteur, ce qui limite énormément le recours aux boucles.

  • Les facteurs (factors) organisent une variable qualitative sur deux niveaux : les éléments eux-mêmes (à l’instar des vecteurs) mais aussi la liste des modalités qu’ils sont susceptibles de prendre.

  • Les matrices sont des tableaux monotypes. Leurs éléments de sont pas toujours des nombres. La notion de matrice est donc plus large qu’en algèbre linéaire

  • Listes : les éléments d’une liste ne sont pas nécessairement monotypes comme ceux d’un vecteur. Une liste peut donc contenir des éléments numériques et des chaînes de caractères, par exemple. Fonction list().

  • Data frames (jeux de données), matrice où chaque vecteur en colonne représente une variable et chaque ligne un individu. Fonction data.frame().

  • Les tableaux obtenus avec la fonction array().

Une valeur manquante est indiquée par NA. Ne pas confondre avec la classe ou l’objet NULL.

Il est conseillé de donner aux objets des noms suffisamment explicites et pas trop longs (remarque non spécifique à R !), de préférence sans accent ni majuscule. Ils peuvent contenir des chiffres (mais pas au début du nom) et les symboles _ et . (le point).

Pour afficher un objet à l’écran on peut juste écrire son nom ou employer la fonction print. On l’efface avec la fonction rm().

L’affectation de valeurs à un objet est presque toujours réalisée avec <- (symbole inférieur suivi du signe moins). On peut aussi employer le symbole = mais la communauté d’utilisateurs ne privilégie pas du tout cette option.

 

Fonctions et packages

Nous l’avons vu, un programme écrit en R (ou d’ailleurs en tout autre langage) repose sur des fonctions. Ce sont des instructions simples suivies de parenthèses. Entre celles-ci figurent un ou plusieurs arguments (ou parfois aucun) nécessaires pour la fonction puisse être exécutée.

Certaines se trouvent dans la base, mais la plupart font partie des packages qui sont des ensembles de fonctions propres à une technique (calculs, graphiques…) ou un domaine particulier, à l’instar des bibliothèques de Python. Il peut y avoir conflit si deux packages chargés comportent des fonctions ayant le même nom.

 

Spécificités du code

R est sensible à la casse, à la ponctuation, à l’accentuation (à éviter), mais pas aux espaces (contrairement à Python qui nécessite des indentations).

Le séparateur de commandes est le point-virgule mais on l’emploie peu car il est plus simple (et plus clair) d’aller à la ligne. Il est donc inutile de terminer chaque ligne de commande par un point-virgule.

Le séparateur décimal est le point.

Une chaîne de caractères doit être placée entre guillemets anglo-saxons ou entre guillemets simples : "a" ou ’a’.

Comme avec Python, un commentaire commence par # (et n’est pas terminé par un second #).

Sans grande surprise, les opérateurs arithmétiques sont +, -, * et /. La puissance est ^. R reconnaît les ordres de priorité (par exemple, la puissance a priorité sur la multiplication).

Autres symboles usuels :

égal ==
différent !=
Inférieur ou égal <= (et vous devinez les autres symboles de comparaison !).

Les symboles logiques sont :

et &
ou |
non !

Important : R compte à partir de 1 (et non de zéro comme Python !).

 

Importation et exportation

Vous n’aurez pas à saisir des données dans R (sauf si vous êtes en formation !) mais à les importer, notamment sous format csv ou depuis Excel.

R fournit des résultats statistiques mais il peut aussi servir à nettoyer et modifier les données. Vous pouvez aussi rédiger un rapport dynamique directement avec R, sans passer par un traitement de texte, avec inclusion éventuelle de graphiques et blocs de code. Cette pluralité d’états de sortie s'accompagne d'une variété de formats d’exportation (csv, pdf…).

 

rugissement