[Rd] recursive default argument reference

Gabor Grothendieck ggrothendieck at myway.com
Wed Nov 10 02:53:18 CET 2004


Vadim Ogranovich <vograno <at> evafunds.com> writes:

: 
: Hi,
: 
: It seems that a formal function argument can not default to an "outer"
: variable of the same name:
: 
: > x <- "foo"
: > ff <- function(x=x) x
: > ff()
: Error in ff() : recursive default argument reference
: > 
: 
: Is this intentional? Why?
: 

Because then one arg could not safely refer to another. Here
x has y as its default value:

   x <- 10
   y <- 7
   f <- function(x = y, y = 3) print(x)
   f() # prints 3

Note that you could do this:

   x <- "foo"
   ff <- function(x.=x) x.
   ff() # returns "foo"
   ff(x=44) # returns 44
   ff(55) # returns 55

For a real example look at merge.data.frame.



More information about the R-devel mailing list