gunter.berton at gene.com
2007-Aug-17 18:03 UTC
[Rd] match.arg bug or documentation error (PR#9859)
There is either a bug or undocumented feature (afaics) in match.arg that requires the length of the arg argument to be no longer than the length of the choices argument even when several.ok is TRUE. Here is a reproducible example: first:> sessionInfo()R version 2.5.0 Patched (2007-04-26 r41320) i386-pc-mingw32 locale: LC_COLLATE=English_United States.1252;LC_CTYPE=English_United States.1252;LC_MONETARY=English_United States.1252;LC_NUMERIC=C;LC_TIME=English_United States.1252 attached base packages: [1] "stats" "graphics" "grid" "grDevices" "tcltk" "utils" "methods" "base" ## Now the example:> x<- letters[1:3] > y <- c('aa','bb') > match.arg(x,y) ## error because several.ok = FALSE, but note warningmessage. Error in match.arg(x, y) : 'arg' should be one of aa, bb In addition: Warning message: longer object length is not a multiple of shorter object length in: arg == choices ## So set several.ok=TRUE ... but there is still an error> match.arg(x,y, several.ok = TRUE)Error in match.arg(x, y, several.ok = TRUE) : 'arg' should be one of aa, bb ## However, if x is of length 2, all is OK.> x <- letters[1:2] > match.arg(x,y, several.ok = TRUE)[1] "aa" "bb" Bert Gunter Genentech Nonclinical Statistics