Partie 5 Organiser ses scripts

On l’a vu, le script est l’élément central de toute analyse dans R. C’est lui qui contient l’ensemble des opérations constitutives d’une analyse, dans leur ordre d’exécution : chargement des données, recodages, manipulations, analyses, exports de résultats, etc.

Une conséquence est qu’un script peut rapidement devenir très long, et on peut finir par s’y perdre. Il est donc nécessaire d’organiser son travail pour pouvoir se retrouver facilement parmi les différentes étapes d’un projet d’analyse.

5.1 Les projets dans RStudio

La notion de projet est une fonctionnalité très pratique de RStudio, qui permet d’organiser son travail et de faciliter l’accès à l’ensemble des fichiers constitutifs d’une analyse (données, scripts, documentation, etc.).

En pratique, un projet est un dossier que vous avez créé où bon vous semble sur votre disque dur, et dans lequel vous regrouperez tous les fichiers en question. Utiliser des projets procure plusieurs avantages :

  • RStudio lance automatiquement R dans le dossier du projet et facilite ainsi grandement l’accès aux fichiers de données à importer (plus besoin de taper le chemin d’accès complet). De même, si vous déplacez votre dossier sur votre disque, le projet continuera à fonctionner.
  • L’onglet Files de la zone en bas à droite de l’interface de RStudio vous permet de naviguer facilement dans les fichiers de votre projet.
  • Vous pouvez très facilement passer d’un projet à l’autre si vous travaillez sur plusieurs jeux de données en parallèle.

Pour créer un projet, il faut aller dans le menu File puis sélectionner New project.

Création d’un nouveau projet

Création d’un nouveau projet

Selon que le dossier du projet existe déjà ou pas, on choisira Existing directory ou New directory. L’étape d’après consiste à créer ou sélectionner le dossier, puis on n’a plus qu’à cliquer sur Create project.

À la création du projet, et chaque fois, que vous l’ouvrirez une nouvelle session R est lancée dans la fenêtre Console avec le dossier du projet comme répertoire de travail, et l’onglet Files affiche les fichiers contenus dans ce dossier.

Une fois le projet créé, son nom est affiché dans un petit menu déroulant en haut à droite de l’interface de RStudio (menu qui permet de passer facilement d’un projet à un autre).

Menu projets

Menu projets

Si vous ne retrouvez pas le nom du projet dans ce menu, vous pouvez l’ouvrir en sélectionnant File puis Open Project… et en allant sélectionner le fichier .Rproj qui se trouve dans le dossier du projet à ouvrir.

5.2 Créer des sections dans un script

Lorsqu’un script est long, RStudio permet de créer des “sections” facilitant la navigation.

Pour créer une section, il suffit de faire suivre une ligne de commentaires par plusieurs tirets -, comme ceci  :

## Titre de la section -------------------------------------

Le nombre de tirets n’a pas d’importance, il doit juste y’en avoir plus de quatre. RStudio affiche alors dans la marge de gauche du script un petit triangle noir qui permet de replier ou déplier le contenu de la section :

Section de script dépliée

Section de script dépliée

Section de script repliée

Section de script repliée

De plus, en cliquant sur l’icône Show document outline (la plus à droite de la barre d’outils de la fenêtre du script), ou en utilisant le raccourci clavier Ctrl+Shift+O, RStudio affiche une “table des matières” automatiquement mise à jour qui liste les sections existantes et permet de naviguer facilement dans le script :

Liste dynamique des sections

Liste dynamique des sections

5.3 Répartir son travail entre plusieurs scripts

Si le script devient très long, les sections peuvent ne plus être suffisantes. De plus, il est souvent intéressant d’isoler certaines parties d’un script, par exemple pour pouvoir les mutualiser. On peut alors répartir les étapes d’une analyse entre plusieurs scripts.

Un exemple courant concerne les recodages et la manipulation des données. Il est fréquent, au cours d’une analyse, de calculer de nouvelles variables, recoder des variables qualitatives existantes, etc. Il peut alors être intéressant de regrouper tous ces recodages dans un script à part (nommé, par exemple, recodages.R). Ce fichier contient alors l’ensemble des recodages “validés”, ceux qu’on a testé et qu’on sait vouloir conserver.

Pour exécuter ces recodages, on peut évidemment ouvrir le script recodages.R dans RStudio et lancer l’ensemble du code qu’il contient. Mais une méthode plus pratique est d’utiliser la fonction source : celle-ci prend en paramètre un nom de fichier .R, et quand on l’exécute elle va exécuter l’ensemble du code contenu dans ce fichier.

Ainsi, un début de script analyse.R pourra ressembler à ceci :

# Analyse des données Histoire de vie 2003

# Chargement des extensions et des données --------------------------

library(questionr)

data(hdv2003)
source("recodages.R")

# Analyse de l'âge --------------------------------------------------

hist(hdv2003$age)

(...)

L’avantage principal est qu’on peut à tout moment revenir à nos données d’origine et aux recodages “validés” simplement en exécutant les deux lignes :

data(hdv2003)
source("recodages.R")

L’autre avantage est qu’on peut répartir nos analyses entre différents scripts, et conserver ces deux lignes en haut de chaque script, ce qui permet de “mutualiser” les recodages validés. On pourrait ainsi créer un deuxième script analyse_qualif.R qui pourrait ressembler à ceci :

# Analyse des données Histoire de vie 2003 - Qualifications

# Chargement des extensions et des données --------------------------

library(questionr)

data(hdv2003)
source("recodages.R")

# Analyse des qualifications --------------------------------------------------

freq(hdv2003$qualif)

(...)

On peut évidemment répartir les recodages entre plusieurs fichiers et faire appel à autant de source que l’on souhaite.

Cette organisation recalcule l’ensemble des recodages à chaque début de script. C’est intéressant et pratique pour des données de taille raisonnable, mais pour des fichiers plus volumineux les calculs peuvent être trop longs. Dans ce cas il est préférable de créer des scripts dédiés qui chargent les données source, effectuent calculs et recodages, et enregistrent les données résultantes dans un fichier de données (voir le chapitre sur l’import/export de données). Et c’est ce fichier résultat qui sera chargé par les scripts d’analyse.

Enfin, pour des projets un peu complexes, on pourra se référer à l’extension ProjectTemplate, qui propose une architecture de dossiers spécifique et des outils associés.

5.4 Désactiver la sauvegarde de l’espace de travail

Vous avez sans doute remarqué qu’au moment de quitter RStudio, une boîte de dialogue semblable à celle-ci s’affiche parfois :

Dialogue d’enregistrement de l’espace de travail

Dialogue d’enregistrement de l’espace de travail

Et il est bien difficile de comprendre de quoi cela parle.

Il s’agit en fait d’une fonctionnalité de R lui-même qui propose d’enregistrer notre espace de travail (workspace), c’est-à-dire l’ensemble des objets qui existent actuellement dans notre environnement, dans un fichier nommé .RData. La prochaine fois que R est lancé dans le même dossier (par exemple à la réouverture du projet), s’il trouve un fichier .RData il va le lire automatiquement et restaurer l’ensemble des objets dans l’état où ils étaient.

Ceci peut sembler pratique, mais c’est en fait une mauvaise idée, pour deux raisons :

  • on peut se retrouver avec des objets dont on ne sait plus d’où ils viennent et comment ils ont été calculés
  • cette manière de faire casse la logique principale de R, qui est que c’est le script qui est central, et que c’est lui qui retrace toutes les étapes de notre analyse et permet de les reproduire

Il est donc fortement recommandé, juste après l’installation de RStudio, de désactiver cette fonctionnalité. Pour cela, aller dans le menu Tools, puis Global Options, et s’assurer que :

  • la case Restore .RData into workspace at startup est décochée
  • le champ Save workspace to .RData on exit vaut Never
Options d’enregistrement de l’espace de travail

Options d’enregistrement de l’espace de travail