From mtmorgan at fhcrc.org  Wed Nov 25 15:21:32 2009
From: mtmorgan at fhcrc.org (Martin Morgan)
Date: Wed, 25 Nov 2009 06:21:32 -0800
Subject: [Rd] group generics
In-Reply-To: <1259109265.8792.22.camel@markov.biostat.ucsf.edu> (Ross
	Boylan's message of "Tue, 24 Nov 2009 16:34:25 -0800")
References: <1259109265.8792.22.camel@markov.biostat.ucsf.edu>
Message-ID: <6ph3a428z2r.fsf@gopher4.fhcrc.org>

Hi Ross -- 

Ross Boylan <ross at biostat.ucsf.edu> writes:

> I have classes A and B, where B contains A.  In the implementation of
> the group generic for B I would like to use the corresponding group
> generic for A.  Is there a way to do that?
>
> I would also appreciate any comments if what I'm trying to do seems like
> the wrong approach.
>
> Here's a stripped down example:
> setClass("A",
>          representation=representation(xa="numeric")
>          )
>
> setMethod("Arith", signature(e1="numeric", e2="A"), function(e1, e2) {
>   new("A", ax=e1*e2 at xa)

typo, I guess, xa = e1...

> }
>           )
>
> setClass("B",
>          representation=representation(xb="numeric"),
>          contains=c("A")
>          )
>
> setMethod("Arith", signature(e1="numeric", e2="B"), function(e1, e2) {
> 	# the next line does not work right
>   v <- selectMethod("callGeneric", signature=c("numeric", "A"))(e1, e2)

    v <- callGeneric(e1, as(e2, "A"))

or probably

   v <- callNextMethod(e1, e2)

Martin

>   print(v)
>   new("B", v, xb=e1*e2 at xb)
> }
> )
>
>
> Results:
>> t1 <- new("B", new("A", xa=4), xb=2)
>> t1
> An object of class ?B?
> Slot "xb":
> [1] 2
>
> Slot "xa":
> [1] 4
>
>> 3*t1
> Error in getGeneric(f, !optional) : 
>   no generic function found for "callGeneric"
>
> Thanks.
> Ross Boylan
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel

-- 
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



[Rd] group generics
Martin Morgan