[Rd] Re: [R] Unexpected behaviour of identical (PR#6799)
Prof Brian Ripley
ripley at stats.ox.ac.uk
Tue Apr 20 13:51:46 CEST 2004
On Tue, 20 Apr 2004 p.dalgaard at biostat.ku.dk wrote:
> "Swinton, Jonathan" <Jonathan.Swinton at astrazeneca.com> writes:
>
> > # works as expected
> > > ac <- c('A','B');
> > > identical(ac,ac[1:2])
> > [1] TRUE
> >
> > #but
> > > af <- factor(ac)
> > > identical(af,af[1:2])
> > [1] FALSE
> >
> > Any opinions?
>
> Did a cross-check with Splus and it doesn't do that , so I think it
> qualifies as a bug. Shouldn't be too hard to fix (might lose a little
> efficiencty though).
No, it comes from
> get("[.factor")
function (x, i, drop = FALSE)
{
y <- NextMethod("[")
class(y) <- oldClass(x)
attr(y, "contrasts") <- attr(x, "contrasts")
attr(y, "levels") <- attr(x, "levels")
if (drop)
factor(y)
else y
}
> attributes(af[1:2, drop=TRUE])
$levels
[1] "A" "B"
$class
[1] "factor"
> attributes(af[1:2, drop=FALSE])
$class
[1] "factor"
$levels
[1] "A" "B"
and one needs to swap the orders. I am about to commit the change.
--
Brian D. Ripley, ripley at 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 272866 (PA)
Oxford OX1 3TG, UK Fax: +44 1865 272595
More information about the R-devel
mailing list