Despejar el ambiente en R

Gustavo du Mortier 26 abril 2021
Despejar el ambiente en R

Antes de iniciar un nuevo proyecto o iniciar una nueva sesión de trabajo en R, se recomienda limpiar el medio ambiente. Esto significa retirar todos los objetos y separar todos los paquetes instalados durante la sesión anterior.

La forma más sencilla y fiable de limpiar todo el entorno es reiniciar R, teniendo cuidado de no guardar la imagen R actual al cerrar la aplicación. En RStudio, debe establecer la opción Save workspace to .RData on exit en Never y desactivar la opción de restaurar el entorno al reiniciar.

También debe asegurarse de que no queden archivos .RData en la carpeta de su proyecto. Estos archivos son invisibles, así que tendrás que usar la línea de comandos para comprobar si tales archivos existen y, si es así, eliminarlos.

Borra el entorno sin reiniciar R

También es posible poner el entorno R en un estado limpio usando un código. Sin embargo, ningún método puede garantizar dejar el entorno tan limpio como cuando se inicializa R. Si quieres alguna forma de separar todos los paquetes excepto los básicos, puedes crear una función - DetachPackages - que automatiza esta tarea.

Esta función crea un vector de nombres de paquetes básicos que debes evitar que se separen. Luego crea una lista con todos los nombres de los paquetes instalados y resta de esta lista los nombres de la lista básica. Finalmente, separa los paquetes cuyos nombres permanecen en el 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)
        }
    }
}

Puedes probar esta función instalando y cargando primero un paquete como readxl con estos comandos:

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

Si luego ejecuta sessionInfo(), en la sección other attached packages, obtendrá esto como parte de la salida:

other attached packages:
[1] readxl_1.3.1

Entonces puede llamar a la función DetachPackages(), y llamar de nuevo a sessionInfo(). La sección other attached packages desaparecerá.