maechler@stat.math.ethz.ch
2000-Sep-25 08:17 UTC
[Rd] Bug(s) w/ rbind.data.frame(); fix also read.table(*, as.is = TRUE) ? (PR#669)
This is not only bug report, but also a RFC (request for comments): The basic problem is that there are (at least) two ways of easily getting non-factor character columns in data.frames. The first is read.table(*, as.is = TRUE) and the second is data.frame(.., I(...), ..) which differ in their result. Whereas the first produces `pure' character columns in the data.frame, the second approach gives `AsIs' classed columns (character, or, e.g. logical). Now, as the following shows, rbind.data.frame() *is* buggy anyway, I wonder if we shouldn't change read.table(*, as.is = TRUE) such that the non-numeric columns of its result become "AsIs" classed as well: ----------- str(d1 <- data.frame(a=1:3, b = I(letters[1:3]))) ## d1 is `alright' ## d0: The same but a `character' *not* protected by AsIs: d0 <- d1 d0$b <- unclass(d0$b) str(d0) ## Note that this is *really* the same as a what you get from ## read.table(*, as.is = TRUE) ## ---------- ## R's read.table() is S+ compatible; however I wonder if ## we shouldn't add "AsIs" classes to all non-numeric components... ## the classes, shouldn't harm, but ensure consistency of treatment.. str(d11 <- rbind(d1, new = c(7, "N"))) ## alright str(d01 <- rbind(d0, new = c(7, "N"))) ## all wrong : ## Both columns were coerced to factors !! ##-- S-PLUS 5 coerces both to "character" -- which is better, ## since the new row *is* all character ## R makes nonsense with 'b' [factor w/ 1 level "N": NA NA NA 1] ## S+ 5.1 does exactly the right thing [both a & b still look like in d0,d1 : str(d12 <- rbind(d1, new = data.frame(a= 7, b="N")))## str(d02 <- rbind(d0, new = data.frame(a= 7, b="N")))## --------- Martin Maechler <maechler@stat.math.ethz.ch> http://stat.ethz.ch/~maechler/ Seminar fuer Statistik, ETH-Zentrum LEO D10 Leonhardstr. 27 ETH (Federal Inst. Technology) 8092 Zurich SWITZERLAND phone: x-41-1-632-3408 fax: ...-1228 <>< -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.- 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 _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._