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, [EMAIL PROTECTED] 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