it-swarm.com.de

alle Variablen außer Funktionen entfernen

Ich habe verschiedene Arten von Objekten in eine R-Konsole geladen ... Ich kann sie alle mit entfernen

rm(list=ls())

oder entfernen Sie nur die Funktionen (aber nicht die Variablen) mit

rm(list=lsf.str())

Meine Frage ist: Gibt es eine Möglichkeit, alle Variablen außer den Funktionen zu entfernen

106
RockScience

Hier ist ein Einzeiler, der alle Objekte außer - Funktionen entfernt:

rm(list = setdiff(ls(), lsf.str()))

Es verwendet setdiff, um die Teilmenge von Objekten in der globalen Umgebung (wie von ls() zurückgegeben) zu finden, die nicht über den Modus function verfügen (wie von lsf.str() zurückgegeben).

126
Josh O'Brien

Die gepostete setdiff-Antwort lautet Nice. Ich dachte nur, ich würde diese verwandte Funktion veröffentlichen, die ich vor einiger Zeit geschrieben habe. Der Nutzen liegt beim Leser :-).

lstype<-function(type='closure'){ 
    inlist<-ls(.GlobalEnv)
    if (type=='function') type <-'closure'
    typelist<-sapply(sapply(inlist,get),typeof)
    return(names(typelist[typelist==type]))
}
7
Carl Witthoft

Mit dem folgenden Befehl können Sie ALLE Variablen löschen. Seien Sie vorsichtig, da Sie Ihre Variablen nicht zurückbekommen können.

rm(list=ls(all=TRUE))
1
lwileczek

Hier ist eine ziemlich praktische Funktion, die ich irgendwo aufgegriffen und ein wenig angepasst habe. Könnte schön sein, im Verzeichnis zu behalten.

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
0
Rich Scriven