[Rd] unexpected behaviour when defining a function

From: Deepayan Sarkar <deepayan.sarkar_at_gmail.com>
Date: Mon 11 Sep 2006 - 23:26:24 GMT


Hi,

I know S manuals used to warn against using the same names for a variable and a function, but I have never seen that cause problems in R, so I usually don't pay much attention to it. Which is why the following behaviour came as a surprise:

> bar <- function() 1
> foo <- function(bar = bar()) {

+ bar
+ }
> foo(9)

[1] 9
> foo()

Error in foo() : recursive default argument reference

Exactly what rule am I violating here?

The following gives a slightly different error, but I assume it has a similar origin:

bar <- function() 1
foo <- function(bar) {
    if (missing(bar)) bar <- bar()

    bar
}
foo()

This version works fine though (so the rule probably involves function arguments somehow):

foo <- function(baz) {

    if (missing(baz)) {

        baz <- function() 2
        baz <- baz()

    }
    baz
}
foo()

-Deepayan



R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel Received on Tue Sep 12 15:26:40 2006

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.1.8, at Tue 12 Sep 2006 - 07:30:06 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-devel. Please read the posting guide before posting to the list.