From ripley@stats.ox.ac.uk  Wed Oct  4 07:27:02 2000
From: ripley@stats.ox.ac.uk (Prof Brian D Ripley)
Date: Wed, 4 Oct 2000 07:27:02 +0100 (BST)
Subject: [Rd] all.equal.list() sometimes fails with unnamed and named
 components (PR#674)
In-Reply-To: <14810.52552.433477.593314@mithrandir.hornik.net>
Message-ID: <Pine.GSO.4.05.10010040724190.16973-100000@auk.stats>

On Wed, 4 Oct 2000, Kurt Hornik wrote:

> > I think that both the names and components should match exactly (the
> > components recursively).  Unfortunately the named-component extraction

> > is partial matching (at least, sometimes) so the ordering of the names
> > always matters.  (There's an S/R difference here I keep forgetting to 
> > write down. I think it is 
> 
> > x <- list(aa=1, bb=2)
> > x["a"]
> 
> > which gives in S
> > $aa:
> > [1] 1
> > and in R
> > $"NA"
> > NULL
> > so S always partial matches, but R does not always.)
> 
> More precisely, we have
> 
> R> x[["a"]]
> [1] 1
> R> x["a"] 
> $"NA"
> NULL
> 
> Does this make sense at all?  Comparing it to
> 
> R> x <- list(aa=1, bb=2, "NA"=3)
> R> x["NA"]
> $"NA"
> [1] 3
> 
> I would think that the x["a"] incorrectly indicates that the list has a
> named component "NA" with value NULL ...

Yes, so would I. I think it is a bug in R.

> What should we do about all.equal.list()?  Should we deal with the named
> components first and strip them off, or always go the positional route?
> Your comment that lists are generic vectors would indicate that the
> second approach is more appropriate ...

See the first two lines I've left here. I think it should be positional
matching *and* the names should match too. That is, all.equal.list would
fail if one list had names and other did not.

-- 
Brian D. Ripley,                  ripley@stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272860 (secr)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595

-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-devel mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-devel-request@stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._


[Rd] all.equal.list() sometimes fails with unnamed and named components (PR#674)
Prof Brian D Ripley