There is a pre-historic coercion in rbind,DataFrame that dates back to XDataFrame that turns every combined column into the class of the column in the first argument to rbind(). At least with Emacs VCS I couldn't get it to go back far enough in the logs. There is a comment there that I no longer understand and may no longer be relevant.
So I got rid of that line, and somewhat amusingly there was a test almost *exactly* like your example except it expected the undesired result. I think Patrick wrote it but it's been touched too many times over the years to easily know, and I'm not sure what he was thinking. Checked it in; we'll see how it goes. Thanks, Michael On Tue, Apr 29, 2014 at 11:24 PM, Hervé Pagès <hpa...@fhcrc.org> wrote: > Hi Michael, > > I noticed this difference between DataFrame vs data.frame when doing > rbind(): > > > rbind(data.frame(aa=NA), data.frame(aa=1:2)) > aa > 1 NA > 2 1 > 3 2 > > > rbind(DataFrame(aa=NA), DataFrame(aa=1:2)) > DataFrame with 4 rows and 1 column > aa > <logical> > 1 NA > 2 TRUE > 3 TRUE > > If the DataFrame with NAs is put after the DataFrame with integers, > things look better: > > > rbind(DataFrame(aa=1:3), DataFrame(aa=NA)) > DataFrame with 4 rows and 1 column > aa > <integer> > 1 1 > 2 2 > 3 3 > 4 NA > > As a consequence, combining 2 Vector objects, one with no metadata cols > and one with metadata cols, will loose the data if the object with no > metadata cols is put first: > > ir1 <- IRanges(1:2, 5) > ir2 <- IRanges(11:13, 14) > mcols(ir2) <- DataFrame(score=2:0) > > Then: > > > mcols(c(ir1, ir2)) > DataFrame with 5 rows and 1 column > score > <logical> > 1 NA > 2 NA > 3 TRUE > 4 TRUE > 5 FALSE > > How hard it would be to bring the rbind,DataFrame method in line with > rbind.data.frame? > > Thanks, > H. > > -- > Hervé Pagès > > Program in Computational Biology > Division of Public Health Sciences > Fred Hutchinson Cancer Research Center > 1100 Fairview Ave. N, M1-B514 > P.O. Box 19024 > Seattle, WA 98109-1024 > > E-mail: hpa...@fhcrc.org > Phone: (206) 667-5791 > Fax: (206) 667-1319 > > _______________________________________________ > Bioc-devel@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/bioc-devel > [[alternative HTML version deleted]]
_______________________________________________ Bioc-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/bioc-devel