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

Pages, Herve hp@ge@ @end|ng |rom |redhutch@org
Thu Mar 14 17:32:30 CET 2019


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



More information about the R-devel mailing list