Here is a suggestion for improving match.arg() Comments welcome. Best Jens Oehlschl?gel # up to now match.arg() works as t1 <- function( param = c("default", "alternative1", "alternative2") ){ param <- match.arg(param) param } # and args(t1) # > function (param = c("default", "alternative1", "alternative2")) # misleadingly tells us the default of param would be a vector of length 3 # the modified version of match.args() works as before, but additionally allows us to be more clear about our parameter default: t1 <- function( param = c("default", "alternative1", "alternative2")[1] ){ param <- match.arg1(param) param } # so args(t1) # > function (param = c("default", "alternative1", "alternative2")[1]) # gives the desired clarity # of course, if we have only one default extracted by [1] the following t1 <- function( param = letters[1] ){ param <- match.arg1(param) param } # will allow too many values, however, with only one default, isn't using match.arg() nonsense anyhow? match.arg1 <- function (arg, choices) { if (missing(choices)) { formal.arg <- formals(sys.function(sys.parent()))[[deparse(substitute(arg))]] if (length(formal.arg)==3 && formal.arg[[1]]=="[" && formal.arg[[3]]==1) formal.arg <- formal.arg[[2]] choices <- eval(formal.arg) } if (all(arg == choices)) return(choices[1]) i <- pmatch(arg, choices) if (is.na(i)) stop(paste("ARG should be one of", paste(choices, collapse = ", "), sep = " ")) if (length(i) > 1) stop("there is more than one match in match.arg") choices[i] } -- GMX - Die Kommunikationsplattform im Internet. -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.- r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html Send "info", "help", or "[un]subscribe" (in the "body", not the subject !) To: r-help-request at stat.math.ethz.ch _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._