[R] coping with a warning in if()

Peter Alspach Peter.Alspach at plantandfood.co.nz
Tue Jan 19 23:12:36 CET 2010


Tena koe Hector

In addition to Jim's comment, you might like to define your function as:
 
fun <- function(n, result = "simple")

This will set the default to 'simple' but one can still call it as fun(result='complete'). 

HTH ...

Peter Alspach
> -----Original Message-----
> From: r-help-bounces at r-project.org 
> [mailto:r-help-bounces at r-project.org] On Behalf Of Héctor Villalobos
> Sent: Wednesday, 20 January 2010 10:34 a.m.
> To: R-help at r-project.org
> Subject: [R] coping with a warning in if()
> 
> Hi,
> 
> I'm sure this one is very easy....
> 
> I am trying to write a function where one of its arguments 
> has two posible (strings) values, defaulting to one of them 
> if none is specified. My problem is that when evaluating the 
> function the following warning is produced:
> 
> "the condition has length > 1 and only the first element will be used"
> 
> I've read the help page of if() but I don't get it because 
> when evaluating step by step the warning is not produced.
> 
> 
> Omitting the details of my function, below is an example of this 
> 
> ## Function
> fun <- function( n, result = c("simple", "complete") )
> {
>   if ( is.null(result) ) 
>      result <-  "simple" 
>   if ( !(result %in% c("simple", "s", "complete", "c")) ) {
>       stop("specify type of result 'simple' or 'complete'")
>  } else {
>   res <- rnorm(n)
>   res
>  }
> }
> 
> ## This gives the warning
> fun(n=20)
> 
> ## But this not
> fun(n=20, result="other")
> 
> ## The warning is not produced when doing this step by step
>   n <- 20
>   result <-  "simple" 
>   if ( !(result %in% c("simple", "s", "complete", "c")) ){
>       stop("specify type of result 'simple' or 'complete'")
>  } else {
>   res <- rnorm(n)
>   res
>  }
> 
> ## or here
>   n <- 20
>   result <-  "other" 
>   if ( !(result %in% c("simple", "s", "complete", "c")) ){
>       stop("specify type of result 'simple' or 'complete'")
>  } else {
>   res <- rnorm(n)
>   res
>  }
> 
> 
> Thanks for your time
> 
> Héctor
> 
> 
> -- 
> Héctor Villalobos <hvillalo at ipn.mx> 
>  CICIMAR - IPN
>  A.P. 592. Col. Centro 
>  La Paz, Baja California Sur, MÉXICO. 23000
>  Tels. (+52 612) 122 53 44; 123 46 58; 123 47 34  ext. 82425
>  Fax.  (+52 612) 122 53 22
> 
> ______________________________________________
> R-help at 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.
> 



More information about the R-help mailing list