[R] Testing for existence inside a function

Liaw, Andy andy_liaw at merck.com
Tue May 15 17:41:17 CEST 2007


Just need a bit more work:

R> f <- function(x) exists(deparse(substitute(x)))
R> f(y)
[1] FALSE
R> y <- 1
R> f(y)
[1] TRUE
R> f(z)
[1] FALSE

Andy 

From: Talbot Katz
> 
> Hi, Andy.
> 
> Thank you for the quick response!  Unfortunately, none of 
> these are exactly 
> what I'm looking for.  I'm looking for the following:  
> Suppose object y 
> exists and object z does not exist.  If I pass y as the value of the 
> argument to my function, I want to be able to verify, inside 
> my function, 
> the existence of y; similarly, if I pass z as the value of 
> the argument, I 
> want to be able to see, inside the function, that z doesn't exist.
> 
> The missing function just checks whether the argument is 
> missing; in my 
> case, the argument is not missing, but the object may not 
> exist.  And the 
> way you use the exists function inside the user-defined 
> function doesn't 
> test the argument to the user-defined function, it's just 
> hard-coded for the 
> object y.  So I'm sorry if I wasn't clear before, and I hope 
> this is clear 
> now.  Perhaps what I'm attempting to do is unavailable 
> because it's a bad 
> programming paradigm.  But even an explanation if that's the 
> case would be 
> appreciated.
> 
> --  TMK  --
> 212-460-5430	home
> 917-656-5351	cell
> 
> 
> 
> >From: "Liaw, Andy" <andy_liaw at merck.com>
> >To: "Talbot Katz" <topkatz at msn.com>,r-help at stat.math.ethz.ch
> >Subject: RE: [R] Testing for existence inside a function  [Broadcast]
> >Date: Tue, 15 May 2007 11:03:12 -0400
> >
> >Not sure which one you want, but the following should cover it:
> >
> >R> f <- function(x) c(x=missing(x), y=exists("y"))
> >R> f(1)
> >     x     y
> >FALSE FALSE
> >R> f()
> >     x     y
> >  TRUE FALSE
> >R> y <- 1
> >R> f()
> >    x    y
> >TRUE TRUE
> >R> f(1)
> >     x     y
> >FALSE  TRUE
> >
> >Andy
> >
> >From: Talbot Katz
> > >
> > > Hi.
> > >
> > > I'm having trouble testing for existence of an object inside
> > > a function.
> > >
> > > Suppose I have a function:
> > >
> > > f<-function(x){
> > > ...
> > > }
> > >
> > > and I call it with argument y:
> > >
> > > f(y)
> > >
> > > I'd like to check inside the function whether argument y
> > > exists.  Is this
> > > possible, or do I have to either check outside the function
> > > or pass the name
> > > of the argument as a separate argument?
> > >
> > > If I do exists(x)  or exists(eval(x)) inside the function and
> > > y does not
> > > exist, it generates an error message.  If I do exists("x") it
> > > says that x
> > > exists even if y does not.  If I had a separate argument to
> > > hold the text
> > > string "y" then I could check that.  But is it possible 
> to check the
> > > existence of the argument inside the function without passing
> > > its name as a
> > > separate argument?
> > >
> > > Thanks!
> > >
> > > --  TMK  --
> > > 212-460-5430	home
> > > 917-656-5351	cell
> > >
> > > ______________________________________________
> > > R-help at stat.math.ethz.ch 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.
> > >
> > >
> > >
> >
> >
> >-------------------------------------------------------------
> -----------------
> >Notice:  This e-mail message, together with any attachments, contains
> >information of Merck & Co., Inc. (One Merck Drive, 
> Whitehouse Station,
> >New Jersey, USA 08889), and/or its affiliates (which may be known
> >outside the United States as Merck Frosst, Merck Sharp & Dohme or MSD
> >and in Japan, as Banyu - direct contact information for affiliates is
> >available at http://www.merck.com/contact/contacts.html) that may be
> >confidential, proprietary copyrighted and/or legally 
> privileged. It is
> >intended solely for the use of the individual or entity named on this
> >message. If you are not the intended recipient, and have 
> received this
> >message in error, please notify us immediately by reply 
> e-mail and then
> >delete it from your system.
> >
> >-------------------------------------------------------------
> -----------------
> 
> 
> 
> 


------------------------------------------------------------------------------
Notice:  This e-mail message, together with any attachments,...{{dropped}}



More information about the R-help mailing list