This may be related to the problems with "greedy" search for inherited 
methods discussed previously on this list (or may not, it's a bit 
different).

In any case, the likely fix will be a substantial cleaning up of generic 
functions hoped for in the next release.

Meanwhile, "Keep it simple" is the best advice (and a good idea 
anyway).  If you remove the irrelevant z= part of the signatures, the 
anomalous result goes away.

By the way, the getMethod() in your example tells us nothing, since it 
does not use inheritance.  See its documentation.  If you use 
selectMethod() you see the same result as the method dispatch.

Peter Ruckdeschel wrote:

>Hi r-devels,
>
>I am stuck in some S4 inheritance problem:
>
>setClass("A",representation(a="numeric"))
>setClass("A1",representation(b="numeric"),contains="A")
>setClass("A2",representation(c="numeric"),contains="A1")
>
>if(!isGeneric("foo")){
>    setGeneric("foo", function(x,y,z, ...) standardGeneric("foo"))
>}
>
>setMethod("foo",signature(x = "A", y = "missing", z = "missing"),
>    function(x)[EMAIL PROTECTED] )
>setMethod("foo",signature(x = "A1", y = "missing", z = "missing"),
>    function(x)[EMAIL PROTECTED] )
>setMethod("foo",signature(x = "A2", y = "missing", z = "missing"),
>    function(x)[EMAIL PROTECTED] )
>setMethod("foo",signature(x = "A1", y = "numeric", z = "missing"),
>    function(x,y)c([EMAIL PROTECTED],y) )
>
>
>x2 <- new("A2", a=1, b=2, c=3)
>
>foo(x2)      ## gives 3 as it should
>foo(x2,y=2)  ## casts to "A1" and gives (2,2) as it should
>foo(x2)      ## now gives 2 as if x2 were permanently cast to "A1"
>## However:
>x2  ## of class "A2" as it should
>getMethod("foo",signature(x = "A2", y = "missing", z = "missing"))
>    ## function(x)[EMAIL PROTECTED]
>
>### What has happened in the dispatching mechanism between
>## in the line           foo(x2,y=2)             ?
>
>I would appreciate any help.
>Thanks for listening
>Peter
>
>______________________________________________
>R-devel@r-project.org mailing list
>https://stat.ethz.ch/mailman/listinfo/r-devel
>
>  
>

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to