удалить все переменные, кроме функций - PullRequest
107 голосов
/ 29 ноября 2011

Я загрузил в консоль R другой тип объектов. Я могу удалить их все, используя

rm(list=ls())

или удалите только функции (но не переменные), используя

rm(list=lsf.str())

Мой вопрос: Есть ли способ удалить все переменные, кроме функций

Ответы [ 4 ]

129 голосов
/ 29 ноября 2011

Ниже приведен однострочник, который удаляет все объекты , за исключением функций:

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

. Он использует setdiff для поиска подмножества объектов в глобальной среде (как возвращеноls()), которые не имеют режима function (как возвращается lsf.str())

7 голосов
/ 29 ноября 2011

Отправленный setdiff ответ хорош. Я просто думал, что опубликую эту связанную функцию, которую я написал некоторое время назад. Его полезность зависит от читателя: -).

lstype<-function(type='closure'){ 
    inlist<-ls(.GlobalEnv)
    if (type=='function') type <-'closure'
    typelist<-sapply(sapply(inlist,get),typeof)
    return(names(typelist[typelist==type]))
}
1 голос
/ 25 октября 2017

Вы можете использовать следующую команду для очистки ВСЕХ переменных.Будьте осторожны, потому что вы не можете вернуть свои переменные.

rm(list=ls(all=TRUE))
0 голосов
/ 23 июня 2014

Вот довольно удобная функция, которую я где-то взял и немного подкорректировал. Может быть, приятно хранить в каталоге.

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...