gpt4 book ai didi

从函数中删除 .GlobalEnv 中的对象

转载 作者:行者123 更新时间:2023-12-03 23:15:28 55 4
gpt4 key购买 nike

我想创建一个函数( CleanEnvir ),它基本上调用 remove/rm 并从 .GlobalEnv 中删除某些对象.

  CleanEnvir <- function(pattern = "tmp"){
rm(list = ls()[grep("tmp", ls())], envir = globalenv())
}

keep <- 1
tmp.to.be.removed <- 0
ls()

## does not work
CleanEnvir()
ls()

## does work
rm(list = ls()[grep("tmp", ls())], envir = globalenv())
ls()

最佳答案

ls()需要看在正确的地方。默认情况下,它查看当前帧,即函数 CleanEnvir 的帧。在你的情况下,因此只找到 "pattern"在你的原文中。

CleanEnvir <- function(pattern = "tmp") {
objs <- ls(pos = ".GlobalEnv")
rm(list = objs[grep("tmp", objs)], pos = ".GlobalEnv")
}

这使:
> CleanEnvir <- function(pattern = "tmp") {
+ objs <- ls(pos = ".GlobalEnv")
+ rm(list = objs[grep("tmp", objs)], pos = ".GlobalEnv")
+ }
> ls()
[1] "CleanEnvir" "foo" "keep"
[4] "tmp.to.be.removed"
> CleanEnvir()
> ls()
[1] "CleanEnvir" "foo" "keep"

关于从函数中删除 .GlobalEnv 中的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4837477/

55 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com