如何从R中的工作区删除所有对象?
我有一个工作区有很多的对象,我想删除所有,但一个。 理想情况下,我想避免inputrm(obj.1, obj.2... obj.n)
。 是否可以指示remove all objects but these ones
呢?
这是一个简单的构造,可以通过使用setdiff
来setdiff
:
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)
将v
replace为要保留的对象的名称
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())