Thanks to all who responded.

I've learn a lot from your comments. The best solution I can see is to use both 'missing()' and
'match.arg()' in my function.

Héctor

> 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


	[[alternative HTML version deleted]]

