Я загрузил в консоль R разные типы объектов. Я могу удалить их все, используя
rm(list=ls())
или удалите только функции (но не переменные), используя
rm(list=lsf.str())
Мой вопрос: есть ли способ удалить все переменные, кроме функций
Вот однострочник, который удаляет все объекты, кроме функций:
rm(list = setdiff(ls(), lsf.str()))
Он используется setdiff
для поиска подмножества объектов в глобальной среде (как возвращено ls()
), у которых нет режима function
(как возвращено lsf.str()
)
rm(list=setdiff(ls(all.names=TRUE), lsf.str(all.names=TRUE)))
.
Чтобы понять, о чем я говорю, попробуйте.j <- 5; ls(); ls(all.names=TRUE)
Опубликованный
setdiff
ответ хорош. Я просто подумал, что выложу эту связанную функцию, которую написал некоторое время назад. Его полезность зависит от читателя :-).источник
ls.str()
который, однако, проверяетmode
скорееtypeof
объекты, чем объекты. (Кстати, я буду проклят, если смогу понять разницу между этими двумя из их документации).Вы можете использовать следующую команду, чтобы очистить ВСЕ переменные. Будьте осторожны, потому что вы не сможете вернуть свои переменные.
источник
Вот довольно удобная функция, которую я где-то подобрал и немного поправил. Было бы неплохо оставить в каталоге.
источник
Я написал это, чтобы удалить все объекты, кроме функций из текущей среды (используемый язык программирования - R с IDE R-Studio):
Ноты-
Аргумент «список» в rm (list =) должен быть вектором символов.
Имя объекта в позиции i текущего окружения возвращается из ls () [i], а сам объект из get (ls () [i]). Следовательно, класс объекта возвращается из класса (get (ls () [i]))
источник