Re: [Rd] Substitute() changed since R2.3.0 (2006-02-02 r37243)?

From: Henrik Bengtsson <hb_at_maths.lth.se>
Date: Mon 03 Apr 2006 - 12:08:54 GMT

Follow up: I've downloaded todays R v2.3.0 alpha (2006-04-02 r37626) for Windows and the below bug has been fixed:

> yaa <- function(...) substitute(list(...))
> yaa(foo(x,y,...,z))
list(foo(x, y, ..., z))

Thank you (Duncan!?)

Henrik

On 3/29/06, Henrik Bengtsson <hb@maths.lth.se> wrote:
> On 29 Mar 2006 11:58:34 +0200, Peter Dalgaard <p.dalgaard@biostat.ku.dk> wrote:
> > "Henrik Bengtsson" <hb@maths.lth.se> writes:
> >
> > > Hi,
> > >
> > > I've got the following two versions of R on WinXP:
> > >
> > > A) R Version 2.3.0 Under development (unstable) (2006-02-02 r37243)
> > > B) R Version 2.3.0 Under development (unstable) (2006-03-27 r37579)
> > >
> > > and a the following "test.R" script:
> > >
> > > foo <- function(path, ...) { print(path) }
> > > bar <- function(x, ...) foo(...)
> > > wow <- function(x, ...) capture.output(foo(...))
> > > bar(1, path=2)
> > > print(wow(1, path=2))
> > >
> > > With A, I get:
> > >
> > > > source("test.R")
> > > [1] 2
> > > [1] "[1] 2"
> > >
> > > But with B, I get
> > > > source("test.R")
> > > [1] 2
> > > Error in print(path) : argument "path" is missing, with no default
> > >
> > > Further debugging led me to the following test2.R script:
> > >
> > > foo <- function(path, ...) { print(path) }
> > > bar <- function(x, ...) foo(...)
> > > wow <- function(x, ...) yaa(foo(...))
> > > yaa <- function(...) substitute(list(...))
> > > bar(1, path=2)
> > > print(wow(1, path=2))
> > >
> > > With A, I get
> > >
> > > > source("test2.R")
> > > [1] 2
> > > list(foo(...))
> > >
> > > But with B, I get
> > >
> > > > source("test.R")
> > > [1] 2
> > > list(foo())
> > >
> > > Note that '...' is missing in the latest version. I don't think this is wanted.
> >
> > I suspect that you're right. Just for reproduction purposes: The
> > script is not needed, and the whole thing simplifies to the two lines:
> >
> > yaa <- function(...) substitute(list(...))
> > yaa(foo(...))
> >
> > which gives list(foo()) in 2.3.0 alpha and used to give list(foo(...)).

>

> And, yaa(foo(x,y,...,z)) gives list(foo(x, y, z)) but used to give
> list(foo(x, y, ..., z)).
>

> /Henrik
>

> >
> > --
> > O__ ---- Peter Dalgaard ุster Farimagsgade 5, Entr.B
> > c/ /'_ --- Dept. of Biostatistics PO Box 2099, 1014 Cph. K
> > (*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918
> > ~~~~~~~~~~ - (p.dalgaard@biostat.ku.dk) FAX: (+45) 35327907
> >


R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel Received on Mon Apr 03 22:32:56 2006

This archive was generated by hypermail 2.1.8 : Mon 03 Apr 2006 - 14:16:53 GMT