Löschen der Umgebung in R

Gustavo du Mortier 26 April 2021
Löschen der Umgebung in R

Bevor Sie ein neues Projekt starten oder eine neue Arbeitssitzung in R beginnen, ist es empfehlenswert, die Umgebung zu leeren. Das bedeutet, dass alle Objekte entfernt und alle Pakete, die während der vorherigen Sitzung installiert wurden, entfernt werden.

Der einfachste und zuverlässigste Weg, die gesamte Umgebung zu bereinigen, ist ein Neustart von R, wobei darauf zu achten ist, dass das aktuelle R-Abbild beim Schließen der Anwendung nicht gespeichert wird. In RStudio müssen Sie die Option Save workspace to .RData on exit auf Never setzen und die Option zur Wiederherstellung der Umgebung beim Neustart deaktivieren.

Sie sollten auch sicherstellen, dass sich keine weiteren .RData-Dateien im Ordner Ihres Projekts befinden. Diese Dateien sind unsichtbar, so dass Sie die Befehlszeile verwenden müssen, um zu prüfen, ob solche Dateien vorhanden sind, und sie gegebenenfalls zu löschen.

Löschen der Umgebung ohne Neustart von R

Es ist auch möglich, die R-Umgebung per Code in einen sauberen Zustand zu versetzen. Allerdings kann keine Methode garantieren, dass die Umgebung so sauber bleibt, wie sie ist, wenn Sie R initialisieren. Wenn Sie eine Möglichkeit haben wollen, alle Pakete außer den grundlegenden zu entfernen, können Sie eine Funktion erstellen - DetachPackages, die diese Aufgabe automatisiert.

Diese Funktion erstellt einen Vektor mit den Namen der Basispakete, die Sie nicht abhängen wollen. Dann erstellt sie eine Liste mit allen installierten Paketnamen und subtrahiert von dieser Liste die Namen in der Basisliste. Schließlich löst sie die Pakete, deren Namen in der package.list verbleiben.

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)
        }
    }
}

Sie können diese Funktion ausprobieren, indem Sie zunächst ein Paket wie readxl mit diesen Befehlen installieren und laden:

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

Wenn Sie dann sessionInfo() ausführen, erhalten Sie im Abschnitt other attached packages dies als Teil der Ausgabe:

other attached packages:
[1] readxl_1.3.1

Dann können Sie die Funktion DetachPackages() aufrufen, und erneut sessionInfo() aufrufen. Der Abschnitt other attached packages wird verschwinden.