2  Utiliser R efficacement

Il existe de nombreuses manières d’interagir avec R, correspondant à différents niveaux de technicité et d’efficacité.

2.1 Approches déconseillées ou inefficaces

  1. Utiliser uniquement l’interface graphique R Commander (Fox, 2017), et réaliser toutes les analyses “à la souris”. Cette interface peut s’avérer pratique pour les débutants, ou pour effectuer de petites tâches rapides de façon plus interactive. Toutefois, les possibilités seront alors (très) limitées, et surtout, vous aurez des difficultés pour obtenir de l’aide, automatiser les tâches répétitives et reproduire vos résultats.

  2. Durant toute la session de travail, saisir des lignes de commandes directement dans la console R, puis exporter l’historique des commandes à la fin de la session. Cette solution est techniquement possible, mais très fortement déconseillée :

    • Forte vulnérabilité aux plantages (perte de tout le travail !)
    • Difficile d’obtenir un historique des commandes propre et exploitable (l’historique contiendra toutes les erreurs !)
    • Peu de fonctionnalités d’aide à la saisie du code dans la console (la console n’est pas un éditeur)

Pour toutes ces raisons, on évitera donc autant que possible ces deux approches, et on se tournera plutôt vers l’une des approches exposées plus bas.

2.2 Un tour d’horizon de quelques solutions efficaces

2.2.1 Utiliser un éditeur de script léger

Une solution simple et efficace : aucun apprentissage particulier n’est requis, mais cela permet déjà de travailler efficacement. Il s’agit d’utiliser séparément un éditeur de script léger (Atom, Notepad++, SublimeText, …) dans lequel on saisira et sauvegardera nos instructions R, et une console R dans laquelle on exécutera ces lignes de commandes.

Les commandes peuvent être envoyées depuis l’éditeur de texte vers la console R par copier-coller, ou mieux, grâce à des plugins qui transfèrent directement des portions de code depuis l’éditeur vers la console. Par exemple, les plugins SendCode et Terminus facilitent les interactions entre R et SublimeText, comme détaillé dans ce tutoriel.

Historiquement, il s’agissait de la manière “standard” (et majoritaire) de programmer en R, et cela reste parfaitement valide aujourd’hui.

2.2.2 Utiliser un EDI (environnement de développement intégré)

Avec l’émergence d’outils plus modernes et plus spécialisés, il s’agit aujourd’hui de la solution la plus populaire : un EDI offre en une seule fenêtre à la fois un éditeur de script et une console R, ainsi qu’un lot de fonctionnalités avancées (auto-complétion, débogage, documentation, …), offrant ainsi une version plus intégrée de l’approche précédente.

Il existe plusieurs EDI dédiés à R. On peut notamment citer :

  • RKWard (tous OS) : https://rkward.kde.org/ ;
  • RStudio (tous OS) ;
  • Tinn-R : (Windows seulement).

Ces EDI offrent de nombreuses possibilités, et demandent donc un petit effort d’apprentissage (vite rentabilisé) pour en tirer pleinement profit.

2.2.3 Utiliser Emacs Speaks Statistics (ESS)

Une autre solution avancée et puissante, optimale pour les Linuxiens, les programmeurs expérimentés… et les courageux.

  • Avantages : extrêmement efficace pour la programmation R, le développement de packages, la gestion de versions, la recherche reproductible, etc. Donne accès à la puissance d’Emacs et Org Mode comme environnement de travail global.
  • Inconvénients : un apprentissage plus long, qui demande un investissement certain. De plus, Emacs et ESS constituent un environnement qui n’est pas optimal out of the box : l’utilisateur devra le personnaliser “sur mesure”.

Retrouvez plus d’informations sur le site web d’ESS, ainsi que sur la série de tutoriels vidéo consacrés à ESS.

2.2.4 Encore d’autres solutions…

Il existe encore bien d’autres manières d’interagir avec R. Les solutions suivantes méritent également de s’y intéresser :

  • l’éditeur de texte vim et son pugin Nvim-R : cet environnement est à peu près équivalent à Emacs Speaks Statistics, i.e. très puissant mais relativement long à maîtriser ;
  • JupyterLab, système efficace pour la programmation lettrée, offrant une interface moderne. De nombreux tutoriels sont disponibles en ligne.

Point commun de ces deux outils (et de Emacs Speaks Statistics) : ils ne sont pas spécifiques à R, et leur apprentissage pourra être rentabilisé même avec d’autres langages de programmation.

2.3 Organisation du répertoire de travail

Structurer correctement et proprement vos fichiers vous aidera considérablement, en particulier dans une vision de maintenabilité et de ré-utilisation à long terme.

Voici un exemple (totalement arbitraire, mais raisonnable) d’organisation du répertoire lié à un projet précis. Pouvez-vous deviner le sens de chaque élément ?

.
├── analysis
│   ├── 01_data_cleaning.R
│   ├── 02_analysis_thickness.R
│   └── 03_correlations.R
├── data
│   ├── metadata.csv
│   ├── scan.csv
│   └── thickness.csv
├── figures
│   ├── correlation-matrix.png
│   ├── histogram.png
├── .git
│   ├── branches
│   ├── ...
│   └── refs
├── .gitignore
├── myproject.Rproj
├── README.md
└── src
    ├── extract_scan.R
    └── misc.R

Remarques :

  • La présence d’un dossier .git (et du fichier .gitignore) pour le versionnement de votre travail avec Git est une bonne pratique, mais est facultative (et hors programme pour cette formation). Rstudio et Emacs offrent de bonnes interfaces Git, qui en faciliteront très considérablement l’utilisation pour les débutants.
  • La présence d’un fichier .Rproj (très spécifique Rstudio, et donc pas lié à R en soi) est facultative également, mais est une excellente pratique : nous y reviendrons. Il existe des équivalents dans d’autres contextes (comme Projectile pour les utilisateurs d’Emacs, etc.).

2.4 Rédaction de scripts R

On appelle script la succession d’instructions R spécifiques à une analyse. Ces commandes seront stockées et conservées dans un fichier dont l’extension doit être .R.

Pour les débutants en programmation, ou les utilisateurs d’interfaces graphiques, R impose un nouveau paradigme :

The source code is real. The objects are realizations of the source code. — Manuel d’Emacs Speaks Statistics

Un script doit rester “propre” : bien organisé, clair, compréhensible. Il doit être à la fois complet (contenir toutes les commandes nécessaires) et minimal (ne rien contenir de superflu).

Corollaire : toutes les instructions directement utiles à l’analyse statistique seront écrites dans le script, et seules les instructions ponctuelles dont on ne veut pas garder la trace (telles que install.packages() ou help()) seront exécutées en les écrivant directement dans la console.

Au cours de la rédaction d’un script R, il est utile (indispensable ?) de saisir des commentaires,* pour expliquer en Français au moins les parties les plus techniques du code. Le caractère de commentaire en R est #, et tout ce qui suit ce signe ne sera pas interprété par R :

sqrt(2) # ceci est la fonction racine carrée
[1] 1.414214

Ne jamais perdre de vue que :

“Programs must be written for people to read, and only incidentally for machines to execute.” — Harold Abelson