Markus Weisner
2010-Feb-08 04:31 UTC
[R] using setMethod or setGeneric to change S4 accessor symbol from @ to $
I created some S4 objects that are essentially data frame objects. The S4 object definitions were necessary to verify data integrity and force a standardized data format. I am, however, finding myself redefining all the typical generic functions so that I can still manipulate my S4 objects as if they were data frames ... I have used setMethod to set methods for "subset", "head", and "tail". I would like to use setMethod or setGeneric to enable me to use object$slotname to access object@slotname for my S4 objects. Any advice is appreciated. Thanks. --Markus [[alternative HTML version deleted]]
Martin Morgan
2010-Feb-08 19:44 UTC
[R] using setMethod or setGeneric to change S4 accessor symbol from @ to $
On 02/07/2010 08:31 PM, Markus Weisner wrote:> I created some S4 objects that are essentially data frame objects. The S4 > object definitions were necessary to verify data integrity and force a > standardized data format. I am, however, finding myself redefining all the > typical generic functions so that I can still manipulate my S4 objects as if > they were data frames ... I have used setMethod to set methods for "subset", > "head", and "tail". I would like to use setMethod or setGeneric to enable > me to use object$slotname to access object at slotname for my S4 objects. Any > advice is appreciated. Thanks.Hi Markus --> setClass("A", representation(a="numeric"))[1] "A"> new("A")$aError in new("A")$a : $ operator not defined for this S4 class> getGeneric("$")standardGeneric for "$" defined from package "base" function (x, name) standardGeneric("$", .Primitive("$")) <environment: 0xa62028> Methods may be defined for arguments: x Use showMethods("$") for currently available ones.> setMethod("$", "A", function(x, name) slot(x, name))[1] "$"> new("A", a=1:10)$a[1] 1 2 3 4 5 6 7 8 9 10> new("A", a=1:10)$bError in slot(x, name) : no slot of name "b" for this object of class "A" does that help? Martin> --Markus > > [[alternative HTML version deleted]] > > ______________________________________________ > 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.-- Martin Morgan 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