Search code examples
renvironmentscoping

Verify object existence inside a function in R


I want to determine whether an object exists inside a function in R:

foo <- function() {
 y <- "hello" 
 if (exists(y, envir = sys.frame())) print(y)
}
foo()

Error in exists(y, envir = sys.frame()) : invalid first argument

I thought adding the envir = sys.frame() would do the trick. Also tried envir = environment()

Expected

foo()
"hello"

Solution

  • You should have checked ?exists:

    Usage:
    
         exists(x, where = -1, envir = , frame, mode = "any",
                inherits = TRUE)
    
    Arguments:
    
           x: a variable name (given as a character string).
    

    Do exists("y")