我有一个有很多对象的工作空间,我想删除所有的,但只有一个。理想情况下,我希望避免键入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())])

下面的操作将从控制台删除所有对象

rm(list = ls())

让我们换个角度思考,如果我们想移除一个基团呢? 试试这个,

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

我个人不喜欢屏幕上有太多的表格和变量,但我无法避免使用它们。所以我把临时的东西命名为“xxx”开头,这样我就可以在它不再使用后删除它们。

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

rm(list = ls(pattern="[^df]"))
require(gdata)
keep(object_1,...,object_n,sure=TRUE)
ls()