[Rd] selectMethod() can fail to find methods in situations of multiple dispatch

Michael Lawrence |@wrence@m|ch@e| @end|ng |rom gene@com
Tue Mar 19 18:12:16 CET 2019


This is due to the intentional truncation of ANY suffixes from method
signatures. I've hacked selectMethod() to be robust to that and will commit
soon. Thanks for the report.

Michael

On Thu, Mar 14, 2019 at 9:32 AM Pages, Herve <hpages using fredhutch.org> wrote:

> Here is an example:
>
>   setGeneric("foo", function(x, y) standardGeneric("foo"))
>
>   setMethod("foo", c("numeric", "ANY"),
>     function(x, y) cat("I'm the foo#numeric#ANY method\n")
>   )
>
>
> Dispatch works as expected but selectMethod() fails to find the method:
>
>
>   > foo(1, TRUE)
>   I'm the foo#numeric#ANY method
>
>   > selectMethod("foo", c("numeric", "logical"))
>   Error in selectMethod("foo", c("numeric", "logical")) :
>     no method found for signature numeric, logical
>
> Adding an arbitrary method that doesn't have ANY in the signature "fixes"
> selectMethod():
>
>   setMethod("foo", c("complex", "integer"),
>     function(x, y) cat("I'm the foo#complex#integer method\n")
>   )
>
> Then:
>
>   > selectMethod("foo", c("numeric", "logical"))
>   Method Definition:
>
>   function (x, y)
>   cat("I'm the foo#numeric#ANY method\n")
>
>   Signatures:
>         x         y
>   target  "numeric" "logical"
>   defined "numeric" "ANY"
>
>
> Thanks,
>
> H.
>
>
> --
> Hervé Pagès
>
> Program in Computational Biology
> Division of Public Health Sciences
> Fred Hutchinson Cancer Research Center
> 1100 Fairview Ave. N, M1-B514
> P.O. Box 19024
> Seattle, WA 98109-1024
>
> E-mail: hpages using fredhutch.org<mailto:hpages using fredhutch.org>
> Phone:  (206) 667-5791
> Fax:    (206) 667-1319
>
>
>         [[alternative HTML version deleted]]
>
> ______________________________________________
> R-devel using r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>

	[[alternative HTML version deleted]]



More information about the R-devel mailing list