Dégager l'environnement en R

Gustavo du Mortier 26 avril 2021
Dégager l'environnement en R

Avant de commencer un nouveau projet ou de lancer une nouvelle session de travail en R, il est recommandé de nettoyer l’environnement. Cela signifie qu’il faut retirer tous les objets et détacher tous les paquets installés lors de la session précédente.

La manière la plus simple et la plus fiable de nettoyer l’environnement entier est de redémarrer R, en prenant soin de ne pas enregistrer l’image R actuelle lors de la fermeture de l’application. Dans RStudio, vous devez régler l’option Save workspace to .RData on exit sur Never et désactiver l’option de restauration de l’environnement au redémarrage.

Vous devez également vous assurer qu’il ne reste pas de fichiers .RData dans le dossier de votre projet. Ces fichiers sont invisibles, vous devrez donc utiliser la ligne de commande pour vérifier si de tels fichiers existent et, le cas échéant, les supprimer.

Effacer l’environnement sans redémarrer R

Il est également possible de mettre l’environnement R dans un état propre en utilisant un code. Cependant, aucune méthode ne peut garantir de laisser l’environnement aussi propre qu’il l’est lorsque vous initialisez R. Si vous voulez un moyen de détacher tous les paquets sauf les paquets de base, vous pouvez créer une fonction - DetachPackages qui automatise cette tâche.

Cette fonction crée un vecteur de noms de paquets de base que vous devez empêcher de détacher. Ensuite, elle crée une liste avec tous les noms de paquets installés et soustrait de cette liste les noms de la liste de base. Enfin, elle détache les paquets dont les noms restent dans le package.list.

DetachPackages <- function() {
    basic.packages <- c("package:stats","package:graphics","package:grDevices","package:utils","package:datasets","package:methods","package:base")
    package.list <- search()[ifelse(unlist(gregexpr("package:",search()))==1,TRUE,FALSE)]
    package.list <- setdiff(package.list,basic.packages)
    if (length(package.list)>0) {
        for (package in package.list) {
            detach(package, character.only=TRUE)
        }
    }
}

Vous pouvez essayer cette fonction en installant et en chargeant d’abord un paquet tel que readxl avec ces commandes :

install.packages("readxl")
library("readxl")

Si vous exécutez ensuite sessionInfo(), dans la section autres paquets attachés, vous obtiendrez ceci comme partie de la sortie :

other attached packages:
[1] readxl_1.3.1

Ensuite, vous pouvez appeler la fonction DetachPackages(), et appeler à nouveau sessionInfo(). La section other attached packages disparaîtra.