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: [email protected] > [mailto:[email protected]] On Behalf Of Héctor Villalobos > Sent: Wednesday, 20 January 2010 10:34 a.m. > To: [email protected] > 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 <[email protected]> > 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 > > ______________________________________________ > [email protected] 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. > ______________________________________________ [email protected] 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.

