我有一个包含大量对象的工作区,我想除去一个以外的所有对象。理想情况下,我希望避免输入rm(obj.1, obj.2... obj.n)
。是否可以指出remove all objects but these ones
?
答案 0 :(得分:317)
使用setdiff
:
rm(list=setdiff(ls(), "x"))
一个完整的例子。运行此风险需要您自担风险 - 它将删除除x
以外的所有变量:
x <- 1
y <- 2
z <- 3
ls()
[1] "x" "y" "z"
rm(list=setdiff(ls(), "x"))
ls()
[1] "x"
答案 1 :(得分:45)
使用keep
包中的gdata
函数非常方便。
> 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"
答案 2 :(得分:40)
我认为另一个选项是在RStudio中打开工作区,然后将列表更改为环境右上角的网格(下图)。然后勾选要清除的对象,最后单击“清除”。
答案 3 :(得分:16)
要保留名称与模式匹配的所有对象,可以使用grep
,如下所示:
to.remove <- ls()
to.remove <- c(to.remove[!grepl("^obj", to.remove)], "to.remove")
rm(list=to.remove)
答案 4 :(得分:15)
我花了几个小时寻找一个类似但略有不同的问题的答案 - 我需要能够删除R中的所有对象(包括函数),除了少数几个向量。
一种方法:
rm(list=ls()[! ls() %in% c("a","c")])
我要保留的向量名为“a”和“c”。
希望这有助于任何人寻找相同的解决方案!
答案 5 :(得分:13)
将v
替换为您要保留的对象的名称
rm(list=(ls()[ls()!="v"]))
帽子提示:http://r.789695.n4.nabble.com/Removing-objects-and-clearing-memory-tp3445763p3445865.html
答案 6 :(得分:4)
这利用了ls()
的{{1}}选项,如果你有很多具有相同模式但你不想保留的对象:
pattern
答案 7 :(得分:2)
require(gdata)
keep(object_1,...,object_n,sure=TRUE)
ls()
答案 8 :(得分:1)
在函数中,除了函数
之外,还有.GlobalEnv中的所有对象initialize <- function(country.name) {
if (length(setdiff(ls(pos = .GlobalEnv), "initialize")) > 0) {
rm(list=setdiff(ls(pos = .GlobalEnv), "initialize"), pos = .GlobalEnv)
}
}
答案 9 :(得分:1)
rm(list=ls()[grep("xxx",ls())])
我个人不喜欢屏幕上有太多的表,变量,但我无法避免使用它们。所以我将以“xxx”开头的临时内容命名为,所以我可以在不再使用后将其删除。
答案 10 :(得分:1)
要保留文件的列表,可以使用:
rm(list=setdiff(ls(), c("df1", "df2")))
答案 11 :(得分:0)
这个怎么样?
# 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)
}
答案 12 :(得分:0)
假设您要从环境中删除除df之外的所有对象:
rm(list = ls(pattern="[^df]"))
答案 13 :(得分:0)
# remove all objects but selected
rm(list = ls()[which("key_function" != ls())])
答案 14 :(得分:-8)
以下内容将从控制台中删除所有对象
rm(list = ls())