[Rd] match.arg bug or documentation error (PR#9859)

gunter.berton at gene.com gunter.berton at gene.com
Fri Aug 17 20:03:44 CEST 2007

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


> sessionInfo()
R version 2.5.0 Patched (2007-04-26 r41320) 

LC_COLLATE=English_United States.1252;LC_CTYPE=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 warning
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

More information about the R-devel mailing list