我是新来的R(和一般的编程),所以我一直在做各种功能给自己热身吧。
我一直在试图找出如何使的R函数,将清除所有我的对象的全球环境中,除了指定的几个。我见过的代码别人使用这个看起来像:
rm(list= ls()[!(ls() %in% c('keepThis','andThis'))],envir = )
但每当我把这个函数(不带参数),该函数将不会从全球环境中删除任何东西。我想知道为什么。
我有更多的运气:
clean <- function(except){
except = ifelse(is.character(except), except, deparse(substitute(except)))
rm(list=setdiff(ls(envir=.GlobalEnv), c(except,"clean")), envir=.GlobalEnv)
}
但我无法弄清楚如何修改这个让我同时节省超过两个对象。
理想情况下,我很想有将保存在默认情况下的几个指定的对象,并作为参数传递任何对象的功能。这甚至可能吗?
我觉得这个功能可以帮助:
rm.except <- function(except, pattern) {
except = except
pattern = pattern
formula = c(c(except), ls(pattern = pattern, envir = .GlobalEnv))
rm(list = setdiff(ls(envir = .GlobalEnv), formula), envir = .GlobalEnv)
}
LS()在我的环境:
[1] "a" "al" "b" "c" "corrmatrix" "counts"
[7] "d" "df1" "df2" "e" "f"
我想要删除的所有对象;除了对象A,B,c,d和含有DF这些对象;
rm.except(except = c("a", "b", "c", "d"), pattern = "df")
LS()为:
[1] "a" "b" "c" "d" "df1" "df2"