On Oct 7, 2010, at 7:27 PM, Eli Holmes wrote:
I'm trying to test for the existence of an object within a function, but despite searching the help files and R-list, I can't figure out how to do it. Here is some test code: #------------------------- a=1 #now I have a in the global environment tst <- function(a,b=1) { # but a is not in the local function environment print(exists("a", inherits=FALSE)) #This is how I think I should be able to test if it is in the local function environment print(a) } tst() #---------------------- #Here's the output [1] TRUE Error in print(a) : argument "a" is missing, with no default It says TRUE, even though I specified inherits=FALSE and "a" is not in the function environment.
Yes it is, or at least its name is known, even if it doesn't have a value:
a=1 #now I have a in the global environment tst2 <- function(a,b=1) { # but a is not in the local function environment print(ls()) } tst2() [1] "a" "b" tst3 <- function(a,b=1) { # but a is not in the local function environment print(formals("tst3")) } ; tst3() $a $b [1] 1
I've tried to pass in where and envir arguments to exists() but I haven't been able to solve the problem.
Exactly what IS the problem? If you tested for "d" there would be a FALSE return. And does this solve it....
> tst4 <- function(a,b=1,d=missing(a)) { + print(d) + } ; tst4() [1] TRUE > tst4 <- function(a,b=1,d=missing(a)) { + print(d) + } ; tst4(2) [1] FALSE -- David Winsemius, MD West Hartford, CT ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.