Thank you. For "getDataPart" I was following (my interpretation of) advice from the documentation for "Classes": The functions getDataPart<http://127.0.0.1:15455/library/methods/help/getDataPart> and setDataPart <http://127.0.0.1:15455/library/methods/help/setDataPart> are a cleaner, but essentially equivalent way to deal with the data part. I interpreted "cleaner" to mean "preferred." From your reply, John, it sounds like I should go back to the obj...@.data construct. -Dan On Tue, Jul 13, 2010 at 5:57 AM, John Chambers <j...@r-project.org> wrote:
> On 7/11/10 9:08 PM, Daniel Murphy wrote: > >> R-Devel: >> >> When I get the data part of an S4 class that contains="data.frame", it >> gives >> me a list, even when the "data.frame" is the S4 version: >> >> d<-data.frame(x=1:3) >>> isS4(d) >>> >> [1] FALSE # of course >> >>> dS4<-new("data.frame",d) >>> isS4(dS4) >>> >> [1] TRUE # ok >> >>> class(dS4) >>> >> [1] "data.frame" # good >> attr(,"package") >> [1] "methods" >> >>> setClass("A", representation(label="character"), contains="data.frame") >>> >> [1] "A" >> >>> a<-new("A",dS4, label="myFrame") >>> getDataPart(a) >>> >> [[1]] # oh? >> [1] 1 2 3 >> >> class(a...@.data) >>> >> [1] "list" # hmm >> >>> names(a) >>> >> [1] "x" # sure, that makes sense >> >>> a >>> >> Object of class "A" >> x >> 1 1 >> 2 2 >> 3 3 >> Slot "label": >> [1] "myFrame" >> >> >> Was I wrong to have expected the "data part" of 'a' to be a "data.frame"? >> > > Yes. Also, there is a clue in the documentation for getDataPart: "rarely > suitable to be called directly" > The data part, aka "data slot", generally does not have a class (S4 or S3). > > You are probably looking for S3Part(): > > > setClass("myFrame", contains = "data.frame") > [1] "myFrame" > > z = new("myFrame", data.frame(x=1:3)) > > z > Object of class "myFrame" > > x > 1 1 > 2 2 > 3 3 > > S3Part(z) > Object of class "data.frame" > > x > 1 1 > 2 2 > 3 3 > > S3Part(z, strictS3 = TRUE) > > x > 1 1 > 2 2 > 3 3 > > > > >> Thanks. >> >> Dan Murphy >> >> [[alternative HTML version deleted]] >> >> ______________________________________________ >> 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