This is one of the perils of non-standard evaluation - functions are no longer referentially transparent.
Hadley On Mon, Aug 25, 2014 at 9:27 AM, 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? > > Cheers > Joris > > -- > Joris Meys > Statistical consultant > > Ghent University > Faculty of Bioscience Engineering > Department of Mathematical Modelling, Statistics and Bio-Informatics > > tel : +32 9 264 59 87 > joris.m...@ugent.be > ------------------------------- > Disclaimer : http://helpdesk.ugent.be/e-maildisclaimer.php > > [[alternative HTML version deleted]] > > ______________________________________________ > R-devel@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel -- http://had.co.nz/ ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel