vacias - ¿Cómo puedo eliminar todos los objetos excepto uno del área de trabajo en R?
eliminar filas en r studio (13)
¿Qué tal esto?
# Removes all objects except the specified & the function itself.
rme <- function(except=NULL){
except = ifelse(is.character(except), except, deparse(substitute(except)))
rm(list=setdiff(ls(envir=.GlobalEnv), c(except,"rme")), envir=.GlobalEnv)
}
Tengo un espacio de trabajo con muchos objetos y me gustaría eliminar todos menos uno. Idealmente, me gustaría evitar tener que escribir rm(obj.1, obj.2... obj.n)
. ¿Es posible indicar remove all objects but these ones
?
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.
Aquí hay una construcción simple que lo hará, usando setdiff
:
rm(list=setdiff(ls(), "x"))
Y un completo ejemplo. Ejecuta esto bajo tu 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"
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.
Desde dentro de 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)
}
}
Esto aprovecha la opción de pattern
de ls()
, 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"
Lo siguiente eliminará todos los objetos de su consola
rm(list = ls())
Para mantener todos los objetos cuyos nombres coinciden con un patrón, puede usar grep
, de esta manera:
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 conservar
rm(list=(ls()[ls()!="v"]))
punta de sombrero: http://r.789695.n4.nabble.com/Removing-objects-and-clearing-memory-tp3445763p3445865.html
Usar la función keep
del paquete gdata
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"
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", por lo que puedo eliminarlas cuando ya no se usen.
suponiendo que desea eliminar todos los objetos excepto df del entorno:
rm(list = ls(pattern="[^df]"))
require(gdata)
keep(object_1,...,object_n,sure=TRUE)
ls()