[Rd] S3 generic/method consistency issue with R CMD check

Drew Schmidt schmidt at math.utk.edu
Wed Nov 21 17:19:39 CET 2012


Hi,

I'm having some trouble setting methods for the qr family of functions.  I
believe I have distilled my misunderstanding in the code snippet below:


foo <- function(x, ...) UseMethod("foo")

foo.default <- function(x) { }

# foo

setGeneric(name = "foo", useAsDefault = foo)

setMethod("foo", signature(x="bar"),
  function(x, ...) { }
)

setGeneric(name="foo.Q",
  function(y, ...)
    standardGeneric("foo.Q")
)

setMethod("foo.Q", signature(y="bar"),
  function(y, ...) { }
)

# QR

setGeneric(name = "qr", useAsDefault = qr)

setMethod("qr", signature(x="bar"),
  function(x, ...) { }
)

setGeneric(name="qr.Q",
  function(y, ...)
    standardGeneric("qr.Q")
)

setMethod("qr.Q", signature(y="bar"),
  function(y, ...) { }
)


If you send this to R CMD check, then it gives exactly one WARNING about
S3 consistency:


* checking S3 generic/method consistency ... WARNING
qr:
  function(x, ...)
qr.Q:
  function(y, ...)


This seems to be complaining about the fact that qr.Q dispatches on 'y'
instead of 'x'.  But there is no complaint about foo/foo.Q even though, I
believe, the only difference is a mechanical substitution of
generic/method names.

Ultimately I would like to be able to set methods for the qr family in a
way that maximally mimics R in both syntax and return.  I'm clearly doing
something wrong, but I'm not really sure how else to proceed.  Any help in
clearing up my misunderstanding here would be greatly appreciated.

Thanks.

-- 
Drew Schmidt
National Institute for Computational Sciences
University of Tennessee



More information about the R-devel mailing list