From p.dalgaard@biostat.ku.dk  Wed Nov 10 11:14:33 1999
From: p.dalgaard@biostat.ku.dk (Peter Dalgaard BSA)
Date: 10 Nov 1999 12:14:33 +0100
Subject: data.frame, cbind is inconsistent with S on logicals (PR#316)
In-Reply-To: ripley@stats.ox.ac.uk's message of "Wed, 10 Nov 1999 11:41:30 +0100 (MET)"
References: <199911101041.LAA18434@pubhealth.ku.dk>
Message-ID: <x2n1sm61k6.fsf@blueberry.kubism.ku.dk>

ripley@stats.ox.ac.uk writes:

> R 0.65.1 (and R-devel 09/11/99)
> 
> > z <- data.frame(a=1:3)
> > b <- rep(NA, 3)
> > mode(b)
> [1] "logical"
> # how many of you expected that? I had forgotten!
> > zz <- cbind(z, b)
> > zz
>   a  b
> 1 1 NA
> 2 2 NA
> 3 3 NA
> > class(zz$b)
> [1] "factor"
> 
> whereas in S it is NULL and zz$b is of mode "numeric".
> 
> The same thing happens with data.frame
> 
> zz <- data.frame(a, b)
> 
> gives zz$b as a factor in R and numeric in S.
> 
> I don't think this is a desirable difference, at least with all NAs!

Hmmm. Notice that in *both* R and S3,

> class(data.frame(x=TRUE)$x)
[1] "factor"

And in both dialects, NA is a logical constant. So S3 is doing a
special exception for all-NA logical vectors. Of course, we could just
clone that...

-- 
   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
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._


data.frame, cbind is inconsistent with S on logicals (PR#316)
Peter Dalgaard BSA