我有一个包含大量对象的工作区,我想除去一个以外的所有对象.理想情况下,我想避免打字rm(obj.1, obj.2... obj.n)
.有可能表明 remove all objects but these ones
吗?
And*_*rie 344
这是一个简单的构造,通过使用setdiff
:
rm(list=setdiff(ls(), "x"))
Run Code Online (Sandbox Code Playgroud)
一个完整的例子.运行此风险需要您自担风险 - 它将删除所有变量,除了x
:
x <- 1
y <- 2
z <- 3
ls()
[1] "x" "y" "z"
rm(list=setdiff(ls(), "x"))
ls()
[1] "x"
Run Code Online (Sandbox Code Playgroud)
Rah*_*raj 48
使用包中的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"
Run Code Online (Sandbox Code Playgroud)
Sad*_*egh 45
我认为另一种选择是在RStudio中打开工作区,然后将列表更改为环境右上角的网格(下图).然后勾选要清除的对象,最后单击"清除".
小智 20
我只花了几个小时寻找一个类似但略有不同的问题的答案 - 我需要能够删除R中的所有对象(包括函数),除了少数几个向量.
一种方法:
rm(list=ls()[! ls() %in% c("a","c")])
Run Code Online (Sandbox Code Playgroud)
我想要保留的向量命名为'a'和'c'.
希望这有助于任何人寻找相同的解决方案!
Aar*_*ica 17
要保留名称与模式匹配的所有对象,您可以使用grep
,如下所示:
to.remove <- ls()
to.remove <- c(to.remove[!grepl("^obj", to.remove)], "to.remove")
rm(list=to.remove)
Run Code Online (Sandbox Code Playgroud)
Ben*_*Ben 14
替换v
为要保留的对象的名称
rm(list=(ls()[ls()!="v"]))
Run Code Online (Sandbox Code Playgroud)
帽子:http://r.789695.n4.nabble.com/Removing-objects-and-clearing-memory-tp3445763p3445865.html
如果您有许多不想保留相同模式的对象,则可以利用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"
Run Code Online (Sandbox Code Playgroud)