r - 如何在 R 中创建函数以从全局环境中删除除默认值和作为参数传递的对象之外的所有对象

标签 r

我是 R 新手(以及一般编程),因此我一直在制作各种函数来热身。

我一直在试图弄清楚如何创建一个 R 函数来清除我的全局环境中的所有对象(除了指定的少数对象)。我看到其他人使用的代码看起来像这样:

rm(list= ls()[!(ls() %in% c('keepThis','andThis'))],envir = )

但是每当我将其放入函数中(不带参数)时,该函数都不会从全局环境中删除任何内容。我想知道为什么。

我的运气比较好:

clean <- function(except){
    except = ifelse(is.character(except), except, deparse(substitute(except)))
    rm(list=setdiff(ls(envir=.GlobalEnv), c(except,"clean")), envir=.GlobalEnv)
}

但我不知道如何修改这个以允许我一次保存两个以上的对象。

理想情况下,我希望有一个函数可以默认保存多个指定的对象以及作为参数传递的任何对象。这可能吗?

最佳答案

我认为这个功能可能有帮助:

rm.except <- function(except, pattern) {
  except = except
  pattern = pattern
  formula = c(c(except), ls(pattern = pattern, envir = .GlobalEnv))
  rm(list = setdiff(ls(envir = .GlobalEnv), formula), envir = .GlobalEnv)
}  

ls() 在我的环境中:

 [1] "a"          "al"         "b"          "c"          "corrmatrix" "counts"    
 [7] "d"          "df1"        "df2"        "e"          "f"     

我想要删除所有对象;除了对象 a、b、c、d 和那些包含 df 的对象;

rm.except(except = c("a", "b", "c", "d"), pattern = "df")  

ls() 将是:

[1] "a"   "b"   "c"   "d"   "df1" "df2"

关于r - 如何在 R 中创建函数以从全局环境中删除除默认值和作为参数传递的对象之外的所有对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54638023/

相关文章:

r - 使用 dplyr : indirectly control by which variables to group by 编程

r - 我如何计算两个矩阵的相应列之间的相关性而不将其他相关性作为输出

R 如何在不知道长度的情况下创建 for 循环?

r - 您何时要在R中设置新环境

r - 执行此加入/合并的 "data table"方法是什么?

r - R 决策树

r - ggplot2:geom_histogram 无法处理大的异常值?

r - 使用 R 进行分层预测

r - 在R中的变量中分离数据

r - 如何在 R 中打印双引号 (")