[R] if/else help

David Winsemius dwinsemius at comcast.net
Wed Sep 21 18:06:41 CEST 2016


> On Sep 21, 2016, at 8:26 AM, MacQueen, Don <macqueen1 at llnl.gov> wrote:
> 
> Hopefully this is not a homework question.
> 
> The other responses are fine, but I would suggest the simplest way to do
> exactly what you ask is
> 
> 
> if (!exists('r4')) r4 <- data.frame(a=0, b=0, c=0, d='x')
> 
> 
> The exists() function requires a character string for its first argument,
> i.e., the name of the object, not the object itself (check the help page
> for exists).

Since the implicit goal is to determine whether a data.frame by that name is in the search path one could add the requirement that the 'list'-mode be added as a requirement in the search:

 if ( !exists('r4', mode='list') ){ r4 <- data.frame(a=0, b=0, c=0, d='x')}

That would avoid a 'false'-detection (or at least an unintended detection) for a function by that name if one `exist`-ed. It would also mask any `r4` that might have been a matrix or other atomic vector outside the local evaluation frame.

-- 
David.


> 
> Using "get" to get it doesn't make sense if it already exists.
> 
> -Don
> 
> -- 
> Don MacQueen
> 
> Lawrence Livermore National Laboratory
> 7000 East Ave., L-627
> Livermore, CA 94550
> 925-423-1062
> 
> 
> 
> 
> 
> On 9/20/16, 12:31 PM, "R-help on behalf of Crombie, Burnette N"
> <r-help-bounces at r-project.org on behalf of bcrombie at utk.edu> wrote:
> 
>> If a data.frame (r4) does not exist in my R environment, I would like to
>> create it before I move on to the next step in my script. How do I make
>> that happen?  Here is what I want to do from a code perspective:
>> 
>> if (exists(r4))
>> {
>> is.data.frame(get(r4))
>> }
>> else
>> {
>> a <- 0, b <- 0, c <- 0, d <- "x", r4 <- data.frame(cbind(a,b,c,d))
>> }
>> 
>> Thanks for your help,
>> B
>> 
>> 	[[alternative HTML version deleted]]
>> 
>> ______________________________________________
>> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
>> 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.
> 
> ______________________________________________
> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> 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.

David Winsemius
Alameda, CA, USA



More information about the R-help mailing list