如何使功能R中删除从全球环境中的所有对象,除了默认值和对象作为参数传递

问题描述 投票:1回答:1

我是新来的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)
}

但我无法弄清楚如何修改这个让我同时节省超过两个对象。

理想情况下,我很想有将保存在默认情况下的几个指定的对象,并作为参数传递任何对象的功能。这甚至可能吗?

r ls rm
1个回答
0
投票

我觉得这个功能可以帮助:

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"
© www.soinside.com 2019 - 2024. All rights reserved.