sqrt(2) # ceci est la fonction racine carrée
[1] 1.414214
Il existe de nombreuses manières d’interagir avec R, correspondant à différents niveaux de technicité et d’efficacité.
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.
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 :
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.
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.
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 :
Ces EDI offrent de nombreuses possibilités, et demandent donc un petit effort d’apprentissage (vite rentabilisé) pour en tirer pleinement profit.
Une autre solution avancée et puissante, optimale pour les Linuxiens, les programmeurs expérimentés… et les courageux.
Retrouvez plus d’informations sur le site web d’ESS, ainsi que sur la série de tutoriels vidéo consacrés à ESS.
Il existe encore bien d’autres manières d’interagir avec R. Les solutions suivantes méritent également de s’y intéresser :
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.
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 :
.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..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.).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