Respuestas:
Aquí hay una construcción simple que lo hará, usando setdiff
:
rm(list=setdiff(ls(), "x"))
Y un ejemplo completo. Ejecute esto bajo su propio riesgo: eliminará todas las variables, excepto x
:
x <- 1
y <- 2
z <- 3
ls()
[1] "x" "y" "z"
rm(list=setdiff(ls(), "x"))
ls()
[1] "x"
Usar la keep
función del gdata
paquete es bastante conveniente.
> ls()
[1] "a" "b" "c"
library(gdata)
> keep(a) #shows you which variables will be removed
[1] "b" "c"
> keep(a, sure = TRUE) # setting sure to TRUE removes variables b and c
> ls()
[1] "a"
Creo que otra opción es abrir el espacio de trabajo en RStudio y luego cambiar la lista a la cuadrícula en la parte superior derecha del entorno (imagen a continuación). Luego marque los objetos que desea borrar y finalmente haga clic en borrar.
Acabo de pasar varias horas buscando la respuesta a una pregunta similar pero ligeramente diferente: necesitaba poder eliminar todos los objetos en R (incluidas las funciones) excepto un puñado de vectores.
Una forma de hacer esto:
rm(list=ls()[! ls() %in% c("a","c")])
Donde los vectores que quiero mantener se llaman 'a' y 'c'.
¡Espero que esto ayude a cualquiera que busque la misma solución!
rm(list=setdiff(ls(), c("a", "c")))
¿verdad? Ver la respuesta de @ Andrie.
Para mantener todos los objetos cuyos nombres coinciden con un patrón, puede usar grep
, así:
to.remove <- ls()
to.remove <- c(to.remove[!grepl("^obj", to.remove)], "to.remove")
rm(list=to.remove)
Reemplace v
con el nombre del objeto que desea mantener
rm(list=(ls()[ls()!="v"]))
hat-tip: http://r.789695.n4.nabble.com/Removing-objects-and-clearing-memory-tp3445763p3445865.html
Esto aprovecha ls()
la pattern
opción de, en el caso de que tenga muchos objetos con el mismo patrón que no desea conservar:
> foo1 <- "junk"; foo2 <- "rubbish"; foo3 <- "trash"; x <- "gold"
> ls()
[1] "foo1" "foo2" "foo3" "x"
> # Let's check first what we want to remove
> ls(pattern = "foo")
[1] "foo1" "foo2" "foo3"
> rm(list = ls(pattern = "foo"))
> ls()
[1] "x"
rm
función siempre debe usarse con cuidado (¡más en el shell!). Vea mi edición para obtener una respuesta a su pregunta.
require(gdata)
keep(object_1,...,object_n,sure=TRUE)
ls()
pensemos de otra manera, ¿y si queremos eliminar un grupo? prueba esto,
rm(list=ls()[grep("xxx",ls())])
Personalmente no me gustan muchas tablas, variables en mi pantalla, pero no puedo evitar usarlas. Así que nombro las cosas temporales que comienzan con "xxx", para poder eliminarlas después de que ya no se usen.
Desde una función, rm todos los objetos en .GlobalEnv excepto la función
initialize <- function(country.name) {
if (length(setdiff(ls(pos = .GlobalEnv), "initialize")) > 0) {
rm(list=setdiff(ls(pos = .GlobalEnv), "initialize"), pos = .GlobalEnv)
}
}
Lo siguiente eliminará todos los objetos de su consola
rm(list = ls())