Designing a "better data frame" is something many people have likely thought about; I certainly have.
But data frames are so widely used and so central to models and other software that a major change needs to be done by the user community, or at least with maximum feedback, IMO. Also, my prior feeling would be that it's better to think of an S4 class to play the role of data.frame, rather than tinkering with the S3 class to allow S4 columns. Having formal classes (particularly using class unions to abstract notions about variables in the data frame) lets one create a more precise and reliable definition. It's true, though, that one then has to work out the details of interfacing the S4 data frame class to current software that works with the S3 data.frame class. AFAICS that is not too hard, but of course the details would be important. I've played around with some of these ideas, more as educational aids in discussing classes and methods than as a serious proposal. Last time I looked, the writeup was not at a level I would feel happy circulating :-} But perhaps a group of interested people could exchange some ideas. Gregor Gorjanc wrote: > Hi, > > Martin Maechler wrote: > >>>>>>> "Gregor" == Gregor Gorjanc <[EMAIL PROTECTED]> >>>>>>> on Sat, 04 Nov 2006 02:09:13 +0100 writes: >>>>>>> >> Gregor> Ferdinand Alimadhi wrote: >> >> >> tmp$comp <- [EMAIL PROTECTED] ?! >> >> Gregor> I "lose" class here and that is not what I >> Gregor> want. Perhaps I should stick with list instead of >> Gregor> data.frame. >> >> Yes, I probably would, at least for the time being. >> > > OK. Why do you say "at least for the time being"? Are there any plans to > generalize putting S4 classes that are not atomic into data.frame? > > >> OTOH, it's interesting that some methods to "stick some S4 >> objects into a data frame do work fine , at least for the >> following case (R-script below) -- and I wonder if we (R developers) >> shouldn't think about more explicitly supporting this, >> e.g., by stating something like >> >> >> If an S4 object simply *contains* an atomic class that can be >> >> used as data.frame column, then that S4 object can also be used >> >> as data.frame column >> >> > > Gregor > > ______________________________________________ > R-devel@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel > > [[alternative HTML version deleted]] ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel