I am trying to write a function that removes an object if it exists. The reason is that I want to get rid of the log-message Error: object ‘arg’ not found. I tried the following:
ifrm <- function(arg)
{
if(exists(as.character(substitute(arg)))){rm(arg)}
}
Unfortunately this does not remove the object if it exists
> ifrm <- function(arg)
+ {
+ if(exists(as.character(substitute(arg)))){rm(arg)}
+ }
> a <- 2
> ifrm(a)
> a
[1] 2
Any hints what I do wrong here?
Best Albrecht
A general idiom to grab what the user supplied as an argument to a function is
deparse(substitute(foo)). This function is similar to that of @Ian Ross but employing this standard idiom:where I assume you only ever want to remove objects from the global environment, hence the default, but you can supply an environment via
env. And here it is in action: