[R] S4 into a data frame

Martin Morgan mtmorgan at fhcrc.org
Tue Jun 19 00:56:09 CEST 2012


On 06/18/2012 01:49 PM, spf385 wrote:
> Greetings,
>
> I'm still very new to R; however I have been tasked with converting an S4
> object into a data.frame. We are just trying to learn the basics of S4.
> Could anyone offer a 'simple' example of coercing an S4 object (such as
> might be stored in a package attribute) into a data.frame? Ultimately, we
> would like to do something along the lines of
>
> mydata<- as.data.frame(original S4 object)

see ?setAs for more extensive discussion.

Not sure what 'stored in a package attribute might mean'. Here's a class

  setClass("A", representation(x="numeric", y="numeric"))

and how to coerce from "A" to a "data.frame"

  setAs("A", "data.frame", function(from) data.frame(x=from at x, y=from at y))

and then in action

 > a = new("A", x=1:5, y=5:1)
 > as(a, "data.frame")
   x y
1 1 5
2 2 4
3 3 3
4 4 2
5 5 1

To use as.data.frame(a), you'd have to implement the 'as.data.frame.A' 
S3 method, e.g.,

  as.data.frame.A = function(x) as(x, "data.frame")

Also, probably you'd want a validity method (see ?setValidity) on "A", 
to ensure that x, y were equal length.

Martin

>
> Thanks in advance!
>
> --
> View this message in context: http://r.789695.n4.nabble.com/S4-into-a-data-frame-tp4633746.html
> Sent from the R help mailing list archive at Nabble.com.
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.


-- 
Computational Biology / Fred Hutchinson Cancer Research Center
1100 Fairview Ave. N.
PO Box 19024 Seattle, WA 98109

Location: Arnold Building M1 B861
Phone: (206) 667-2793



More information about the R-help mailing list