Hi
I want a function that takes precisely one named argument and no unnamed arguments. The named argument must be one of "a" or "b".
If "a" is supplied, return "a". If "b" is supplied, return 2*b. That is, the desired behaviour is:
R> f(a=4) #return 4 R> f(b=33) #return 66 R> f(5) #error R> f(a=3,b=5) #error R> f(a=3,q=3) #error R> f(q=3) #error
The following function is intended to implement this:
f <- function(a=NULL, b=NULL){
if(!xor(is.null(a), is.null(b))){stop("specify exactly one of a and b")}
if(is.null(a)){return(2*b)}else{return(a)}
}
It almost works, but f(6) returns 6 (and should be an error).
What is the best way to accomplish my desired behaviour?
-- Robin Hankin Uncertainty Analyst Southampton Oceanography Centre European Way, Southampton SO14 3ZH, UK tel 023-8059-7743
______________________________________________ [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