Cancella l'ambiente in R

Gustavo du Mortier 26 aprile 2021
Cancella l'ambiente in R

Prima di iniziare un nuovo progetto o iniziare una nuova sessione di lavoro in R, si consiglia di ripulire l’ambiente. Ciò significa rimuovere tutti gli oggetti e scollegare tutti i pacchetti installati durante la sessione precedente.

Il modo più semplice e affidabile per ripulire l’intero ambiente è riavviare R, facendo attenzione a non salvare l’immagine R corrente quando si chiude l’applicazione. In RStudio, è necessario impostare l’opzione Save workspace to .RData on exit su Never e disabilitare l’opzione per ripristinare l’ambiente al riavvio.

Dovresti anche assicurarti che non ci siano file .RData rimanenti nella cartella del tuo progetto. Questi file sono invisibili, quindi dovrai utilizzare la riga di comando per verificare se tali file esistono e, in caso affermativo, eliminarli.

Cancella l’ambiente senza riavviare R

È anche possibile mettere l’ambiente R in uno stato pulito usando il codice. Tuttavia, nessun metodo può garantire di lasciare l’ambiente pulito come lo è quando si inizializza R. Se si desidera un modo per scollegare tutti i pacchetti tranne quelli di base, è possibile creare una funzione - DetachPackages che automatizza questo compito.

Questa funzione crea un vettore di nomi di pacchetti di base che dovresti evitare di scollegare. Quindi crea una lista con tutti i nomi dei pacchetti installati e sottrae da questo lista i nomi nell’lista di base. Infine, stacca i pacchetti i cui nomi rimangono in 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)
        }
    }
}

Puoi provare questa funzione installando e caricando prima un pacchetto come readxl con questi comandi:

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

Se poi esegui sessionInfo(), nella sezione other attached packages, otterrai questo come parte dell’Output:

other attached packages:
[1] readxl_1.3.1

Quindi puoi chiamare la funzione DetachPackages() e chiamare di nuovo sessionInfo(). La sezione other attached packages sarà scomparsa.