Re: [Rd] unexpected behaviour when defining a function

From: Gabor Grothendieck <ggrothendieck_at_gmail.com>
Date: Tue 12 Sep 2006 - 05:57:22 GMT

Sorry I forgot one of the dots. Here it is corrected:

> bar <- function() 1
> foo <- function(bar. = bar()) {
+ bar.
+ }
> foo()

[1] 1
> foo(bar = bar)
function() 1

On 9/12/06, Gabor Grothendieck <ggrothendieck@gmail.com> wrote:
> You can't have x=x in an argument list.
>
> Try the following noting that we put a dot at the end of bar:
>
> > bar <- function() 1
> > foo <- function(bar. = bar()) {
> + bar
> + }
> > foo()
> function() 1
> > foo(bar = bar)
> function() 1
>
> On 9/11/06, Deepayan Sarkar <deepayan.sarkar@gmail.com> wrote:
> > 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
> >
>



R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel Received on Tue Sep 12 16:11:02 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 - 06:30:09 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.