我是 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/