Compiled code gives a better error message (not clear why the interpreter doesn't do this as well):
> cmpfun(foo)() Error in bar() : promise already under evaluation: recursive default argument reference or ear$ The environment in which default arguments are evaluated is the environment of the function call itself, not the environment of the caller or the lexical enclosure (the same here). So the two 'y' used in function(y = y) refer to the same binding, hence circular reference. If you use foo <- function (z = 2) { bar <- function (y = z) y^2 bar() } then there is no problem: > foo() [1] 4 > cmpfun(foo)() [1] 4 Best, luke Luke Tierney Chair, Statistics and Actuarial Science Ralph E. Wareham Professor of Mathematical Sciences University of Iowa Phone: 319-335-3386 Department of Statistics and Fax: 319-335-3017 Actuarial Science 241 Schaeffer Hall email: luke-tier...@uiowa.edu Iowa City, IA 52242 WWW: http://www.stat.uiowa.edu ________________________________________ From: r-help-boun...@r-project.org [r-help-boun...@r-project.org] on behalf of Philippe Grosjean [phgrosj...@sciviews.org] Sent: Monday, March 31, 2014 9:40 AM To: R Help Subject: [R] Default argument not passed to subfunction when argument name matches default expression Hello, I have difficulties to understand this one: foo <- function (y = 2) { bar <- function (y = y) y^2 bar() } foo() #! Error in y^2 : 'y' is missing foo(3) #! Error in y^2 : 'y' is missing Note that this one works: foo <- function (y = 2) { bar <- function (y = y) y^2 bar(y) # Not using default value for y= argument } foo() #! [1] 4 foo(3) #! [1] 9 … as well as this one: foo <- function (y = 2) { bar <- function (Y = y) Y^2 bar() # Default, but different names for argument Y= and value 'y' } foo() #! [1] 4 foo(3) #! [1] 9 Best, PhG > sessionInfo() R version 3.0.2 (2013-09-25) Platform: x86_64-apple-darwin10.8.0 (64-bit) locale: [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8 attached base packages: [1] stats graphics grDevices utils datasets methods base ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code. ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.