On 25 Aug 2014, at 16:27 , Joris Meys <jorism...@gmail.com> wrote: > Dear all, > > I initially ran into this problem while rebuilding a package dependent on > nleqslv. I got the following error: > > Error in match.arg(global) : 'arg' must be of length 1 > > This didn't occur in previous versions of nleqslv, but did in the current > one (2.4). I think I pinned the problem down to the following example: > > Take two functions: > > test <- function(x=c("q","r","s"),global=c("d","e","r","z","q")){ > x <- match.arg(x) > global <- match.arg(global) > return(list(x,global)) > } > > test2 <- function(x=c("q","r","s"),global=c("d","z","q")){ > test(x=x,global=global) > } > > test2() calls an "internal" function test() that uses the same arguments. > Note that for x both functions have exactly the same defaults, but not for > global. > > Calling test2() gives the reported error: > >> test2() > Error in match.arg(global) : 'arg' must be of length 1 > > I see the point of this error (global is not seen by test2() as default > settings but as a character vector I presume), but I wonder why this isn't > the case for x. Is this by design? If so, is there a part of the manual I > overlooked? >
What you are experiencing would seem to amount to this: > f <- function(x=c("a","b","c")) {x <- letters[1:3] ; match.arg(x)} > f() [1] "a" > f <- function(x=c("a","b","c")) {x <- letters[1:2] ; match.arg(x)} > f() Error in match.arg(x) : 'arg' must be of length 1 Words to that effect appear in the Details section of ?match.arg -Peter D -- Peter Dalgaard, Professor, Center for Statistics, Copenhagen Business School Solbjerg Plads 3, 2000 Frederiksberg, Denmark Phone: (+45)38153501 Email: pd....@cbs.dk Priv: pda...@gmail.com ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel