cbind is not generic as claimed, omits labels where S has them (PR#239)

Peter Dalgaard BSA p.dalgaard@biostat.ku.dk
06 Aug 1999 09:42:23 +0200


Ross Ihaka <ihaka@stat.auckland.ac.nz> writes:

> On Fri, Aug 06, 1999 at 12:08:05AM +0200, Peter Dalgaard BSA wrote:
> > Ross Ihaka <ihaka@stat.auckland.ac.nz> writes:
> > 
> > I played around with this earlier today. There's nothing special about
> > dataframes, S does the same with any classed object. I.e.
> > 
> > class(b)<-"my"
> > cbind.my<-function(...)match.call()
> > 
> > cbind(a,b)
> > 
> > will dispatch cbind.my
> 
> I played some more.  I think data frames are special somehow.
> 
> 	S> x <- factor(1:10)
> 	S> y <- data.frame(1:10)
> 	> class(x)
> 	[1] "factor"
> 	S> class(y)
> 	[1] "data.frame"
> 	S> class(cbind(x,y))
> 	[1] "data.frame"
> 	S> class(cbind(y,x))
> 	[1] "data.frame"
> 
> They seem to overpower other class arguments too.

This is because there's no cbind.factor:

S> cbind.factor<-function(...) match.call()
S> cbind(x,y)
      x           y 
X1.10 1 numeric, 10
attr(, "names"):
[1] ""      "X1.10"
Warning messages:
1: Incompatible methods ("cbind.factor", "cbind.data.frame") for "cbind"
2: Number of rows of result is not a multiple of vector length (arg 1) in: cbin
	d(x, y)

(and cbind.data.frame just calls data.frame(...) so it's little wonder
that the result is always a data frame)

-- 
   O__  ---- Peter Dalgaard             Blegdamsvej 3  
  c/ /'_ --- Dept. of Biostatistics     2200 Cph. N   
 (*) \(*) -- University of Copenhagen   Denmark      Ph: (+45) 35327918
~~~~~~~~~~ - (p.dalgaard@biostat.ku.dk)             FAX: (+45) 35327907
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
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
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._