如何从R中的工作区删除所有对象?

我有一个工作区有很多的对象,我想删除所有,但一个。 理想情况下,我想避免inputrm(obj.1, obj.2... obj.n) 。 是否可以指示remove all objects but these ones呢?

这是一个简单的构造,可以通过使用setdiffsetdiff

 rm(list=setdiff(ls(), "x")) 

还有一个完整的例子。 运行这个需要您自担风险 – 它将删除除x之外的所有variables:

 x <- 1 y <- 2 z <- 3 ls() [1] "x" "y" "z" rm(list=setdiff(ls(), "x")) ls() [1] "x" 

使用gdata包中的keep函数非常方便。

 > ls() [1] "a" "b" "c" library(gdata) > keep(a) #shows you which variables will be removed [1] "b" "c" > keep(a, sure = TRUE) # setting sure to TRUE removes variables b and c > ls() [1] "a" 

我认为另一种select是在RStudio中打开工作区,然后将列表更改为环境右上方的网格(下图)。 然后勾选你想清除的对象,最后点击清除。

在这里输入图像说明

为了保持名称与模式匹配的所有对象,可以使用grep ,如下所示:

 to.remove <- ls() to.remove <- c(to.remove[!grepl("^obj", to.remove)], "to.remove") rm(list=to.remove) 

vreplace为要保留的对象的名称

 rm(list=(ls()[ls()!="v"])) 

帽子提示: http : //r.789695.n4.nabble.com/Removing-objects-and-clearing-memory-tp3445763p3445865.html

我花了几个小时寻找类似的,但稍有不同的问题的答案 – 我需要能够删除R(包括函数)中的所有对象,除了一些向量。

一种方法来做到这一点:

 rm(list=ls()[! ls() %in% c("a","c")]) 

我想保留的向量被命名为“a”和“c”。

希望这有助于任何人寻找相同的解决scheme!

这样可以利用ls()pattern选项,在这种情况下,如果有很多对象具有相同的模式,并且不想保留:

 > foo1 <- "junk"; foo2 <- "rubbish"; foo3 <- "trash"; x <- "gold" > ls() [1] "foo1" "foo2" "foo3" "x" > # Let's check first what we want to remove > ls(pattern = "foo") [1] "foo1" "foo2" "foo3" > rm(list = ls(pattern = "foo")) > ls() [1] "x" 

从一个函数中,除了函数外,rm中的所有对象都是.GlobalEnv

 initialize <- function(country.name) { if (length(setdiff(ls(pos = .GlobalEnv), "initialize")) > 0) { rm(list=setdiff(ls(pos = .GlobalEnv), "initialize"), pos = .GlobalEnv) } } 
 require(gdata) keep(object_1,...,object_n,sure=TRUE) ls() 

这个怎么样?

 # Removes all objects except the specified & the function itself. rme <- function(except=NULL){ except = ifelse(is.character(except), except, deparse(substitute(except))) rm(list=setdiff(ls(envir=.GlobalEnv), c(except,"rme")), envir=.GlobalEnv) } 

假设你想从环境中除去df以外的所有对象:

 rm(list = ls(pattern="[^df]")) 

让我们以不同的方式思考,如果我们想要删除一个组织呢? 尝试这个,

  rm(list=ls()[grep("xxx",ls())]) 

我个人不喜欢太多的表格,我的屏幕上的variables,但我不能避免使用它们。 所以我以“xxx”开头的临时名称,所以我可以删除它不再使用。

以下内容将删除您的控制台中的所有对象

 rm(list = ls())