Skip to content
Back to formatted view

Raw Message

Message-ID: <loom.20041110T024809-978@post.gmane.org>
Date: 2004-11-10T02:53:29Z
From: Gabor Grothendieck
Subject: recursive default argument reference

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.