Re: [Rd] c.factor

From: Brian Ripley <ripley_at_stats.ox.ac.uk>
Date: Wed 15 Nov 2006 - 09:31:18 GMT

On Tue, 14 Nov 2006, Bill Dunlap wrote:

> On Tue, 14 Nov 2006, Prof Brian Ripley wrote:
>
>> Well, R has managed without a factor method for c() for most of its decade
>> of existence (not that it originally had factors as we know them).
>>
>> I would argue that factors are best viewed as an enumeration type, and
>> anything which silently changes their level set is a bad idea. I can see
>> a case for a c() method for factors that combines factors with the same
>> level sets, but I can also see this is best done by users who know the
>> level sets are same (c.factor would have to expend a considerable effort
>> to check).
>>
>> You also need to consider the dispatch rules. c.factor will be called
>> whenever the first argument is a factor, whatever the others are. S4 (I
>> think, definitely S4-based versions of S-PLUS) has an alternative concat()
>> that works differently (recursively) and seems a more natural model.
>
> In addition, c() has always had a double meaning of
> (a) turning an object into a simple "vector" (an object
> without "attributes"), as in
> > c(factor(c("Cat","Dog","Cat")))
> [1] 1 2 1
> > c(data.frame(x=1:2,y=c("Dog","Cat")))
> $x
> [1] 1 2
>
> $y
> [1] Dog Cat
> Levels: Cat Dog

To my surprise that was not documented at all on the R help page, and I've clarified it. (BTW, at least in R it does not remove names, just all other attributes.)

> (b) concatenating several such vectors into one.
>
> The proposed c.factor does only (b).

(Strictly not, as a factor is not a vector.)

But the help page explicitly only describes the default method, and some of the other methods do preserve some attributes, AFAIR.

> Should we just
> throw c() into the ash heap and use as.vector() or
> concat() instead?
>
> The whole concept of concatenating objects of disparate
> types is suspect.

I think working on a concat() for R would be helpful. I vaguely recalled something like it in the Green Book, but the index does not help (but then it is not very complete).

Brian

-- 
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 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel
Received on Wed Nov 15 20:33:00 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 Thu 23 Nov 2006 - 06:30:50 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.