[R] Definition of generic function for subclasses
Martin Morgan
mtmorgan at fhcrc.org
Tue Mar 13 14:36:48 CET 2012
On 03/13/2012 04:34 AM, Alexander wrote:
> Hi,
> I am working on a project, which contains S4 classes and subclasses. Lets
> assume the following organisation:
> A: S4 Class
> B,C: inherit from A
> D,E,F,G: inherit from B
> H,I: inherit from C
>
> I want to define now a generic function, which returns me the name of the
> class. I can now write the function with "A" in the signature. Is there any
?class for this function
> reason to write the function for B,C, D,E,... with "B","C","D","E", .. in
> the signature ? I can imagine that it can become a mess if for example I
Implement the method at the lowest (highest?) level in the hierarchy as
possible -- so on "A" only for the example of class.
> write a function for "A" and a special function for "I" (lets assume, I is
> the only exception).
If 'I' is somehow special then write a method for it alone
setClass("A"); setClass("C", "A"); setClass("I", "C")
setGeneric("cls", function(x, ...) standardGeneric("cls"))
setMethod(cls, "A", function(x, ...) as.vector(class(x)))
setMethod(cls, "I", function(x, ...) tolower(as.vector(class(x))))
and then
> cls(new("C"))
[1] "C"
> cls(new("I"))
[1] "i"
> Have you any best-work-pratice to share ?
Keep your class hierarchy simple and relevant to your actual problem.
Martin
>
> Thanks
> Alexander
>
> --
> View this message in context: http://r.789695.n4.nabble.com/Definition-of-generic-function-for-subclasses-tp4468837p4468837.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: M1-B861
Telephone: 206 667-2793
More information about the R-help
mailing list