On 31/03/2014 10:40 AM, Philippe Grosjean wrote:
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
This is simply a misunderstanding about scoping. The default value for
a function argument is evaluated in the local frame, not the caller
frame, so specifying an argument as y = y is not a useful thing to do.
Duncan Murdoch
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.