una - eliminar un elemento en r
eliminar todas las variables, excepto las funciones (4)
Aquí hay un trazador de líneas que elimina todos los objetos a excepción de las funciones:
rm(list = setdiff(ls(), lsf.str()))
Utiliza setdiff
para encontrar el subconjunto de objetos en el entorno global (como lo devuelve ls()
) que no tienen function
modo (como lo devuelve lsf.str()
)
He cargado en una consola R diferentes tipos de objetos. Puedo eliminarlos a todos usando
rm(list=ls())
o eliminar solo las funciones (pero no las variables) usando
rm(list=lsf.str())
Mi pregunta es: ¿hay alguna manera de eliminar todas las variables, excepto las funciones
Aquí hay una función bastante conveniente que recogí en algún lugar y me adapté un poco. Sería bueno mantenerlo en el directorio.
list.objects <- function(env = .GlobalEnv)
{
if(!is.environment(env)){
env <- deparse(substitute(env))
stop(sprintf(''"%s" must be an environment'', env))
}
obj.type <- function(x) class(get(x, envir = env))
foo <- sapply(ls(envir = env), obj.type)
object.name <- names(foo)
names(foo) <- seq(length(foo))
dd <- data.frame(CLASS = foo, OBJECT = object.name,
stringsAsFactors = FALSE)
dd[order(dd$CLASS),]
}
> x <- 1:5
> d <- data.frame(x)
> list.objects()
# CLASS OBJECT
# 1 data.frame d
# 2 function list.objects
# 3 integer x
> list.objects(env = x)
# Error in list.objects(env = x) : "x" must be an environment
La respuesta publicada de setdiff
es agradable. Solo pensé en publicar esta función relacionada que escribí hace un tiempo. Su utilidad depende del lector :-).
lstype<-function(type=''closure''){
inlist<-ls(.GlobalEnv)
if (type==''function'') type <-''closure''
typelist<-sapply(sapply(inlist,get),typeof)
return(names(typelist[typelist==type]))
}
Puede usar el siguiente comando para borrar TODAS las variables. Tenga cuidado porque no puede recuperar sus variables.
rm(list=ls(all=TRUE))