I would like to create a function (CleanEnvir
) which basically calls remove/rm and which removes certain objects from .GlobalEnv
.
Cle
Shortest code solution I got for this is this one:
remove a specific variable:
y <- TRUE
CleanEnvir <- function(x) {rm(list=deparse(substitute(x)),envir=.GlobalEnv)}
CleanEnvir(y)
y
deparse substitute to paste the variable name rather than its value, and indeed pos = ".GlobalEnv" works, but you can also simply use envir=.GlobalEnv
SOLUTION 2: This actually allows for pattern matching. (I STRONGLY recommend against this because you could possibly remove stuff you don't want to remove by accident. I.e. you want to remove tmp1 and tmp2 but you forgot that there is another variable that is called Global.tmp and localtmp as in temperature for example.
remove by pattern:
myvar1 <- TRUE
myvar2 <- FALSE
Pat.clean.Envir <- function(x) { rm(list = ls(.GlobalEnv)[grep(deparse(substitute(x)), ls(.GlobalEnv))], envir = .GlobalEnv) }
Pat.clean.Envir(myvar)
cheers.