我有一个有很多对象的工作空间,我想删除所有的,但只有一个。理想情况下,我希望避免键入rm(obj。1、obj.2……obj.n)。是否有可能指示删除除这些对象之外的所有对象?
当前回答
从函数内部,rm .GlobalEnv中除函数外的所有对象
initialize <- function(country.name) {
if (length(setdiff(ls(pos = .GlobalEnv), "initialize")) > 0) {
rm(list=setdiff(ls(pos = .GlobalEnv), "initialize"), pos = .GlobalEnv)
}
}
其他回答
# remove all objects but selected
rm(list = ls()[which("key_function" != ls())])
假设你想从环境中删除除df之外的所有对象:
rm(list = ls(pattern="[^df]"))
下面是一个简单的构造,通过使用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"
我刚刚花了几个小时来寻找一个类似但略有不同的问题的答案——我需要能够删除R中的所有对象(包括函数),除了少数向量。
一种方法是:
rm(list=ls()[! ls() %in% c("a","c")])
我想保留的向量命名为a和c。
希望这能帮助寻找同样解决方案的人!
require(gdata)
keep(object_1,...,object_n,sure=TRUE)
ls()