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? I use R-1.9.1. Thanks, Vadim
2 messages · Vadim Ogranovich, Gabor Grothendieck
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? I use R-1.9.1. Thanks, Vadim
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.