Re: [Rd] calling setGeneric() twice (don't; documentation comments)

From: Ross Boylan <ross_at_biostat.ucsf.edu>
Date: Tue, 19 Jan 2010 13:26:42 -0800

On Tue, 2010-01-19 at 12:55 -0800, Seth Falcon wrote:
> I would expect setGeneric to create a new generic function and
> nuke/mask
> methods associated with the generic that it replaces.
I tried a test in R 2.7.1, and that is the behavior. I think it would be worthwhile to document it in ?setGeneric.

Also, ?setGeneric advocates first defining a regular function (e.g., bar) and then doing a simple setGeneric("bar"). I think the advice for package developers is different, so perhaps some changes there would be a good idea too.

I thought I was defining setGeneric twice for a few functions, and thus that it did work OK. It turns out I have no duplicate definitions.

Here's the test:
> setClass("A", representation(z="ANY"))
[1] "A"
> setClass("B", representation(y="ANY"))
[1] "B"
> setGeneric("foo", function(x) standardGeneric("foo"))
[1] "foo"
> setMethod("foo", signature(x="A"), function(x) return("foo for A"))
[1] "foo"
>
> a=new("A")
> b=new("B")
> foo(a)

[1] "foo for A"
> foo(b)

Error in function (classes, fdef, mtable) :   unable to find an inherited method for function "foo", for signature "B"
> setGeneric("foo", function(x) standardGeneric("foo"))
[1] "foo"
> setMethod("foo", signature(x="B"), function(x) return("foo for B"))
[1] "foo"
>
> setGeneric("foo", function(x) standardGeneric("foo"))
[1] "foo"
> setMethod("foo", signature(x="B"), function(x) return("foo for B"))
[1] "foo"
> foo(a)

# here's where the disappearance of the prior setMethod shows Error in function (classes, fdef, mtable) :   unable to find an inherited method for function "foo", for signature "A"
> foo(b)

[1] "foo for B"

So I guess I am going to pull the setGeneric's out. Ross



R-devel_at_r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel Received on Tue 19 Jan 2010 - 21:30:22 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Wed 20 Jan 2010 - 12:50:17 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-devel. Please read the posting guide before posting to the list.

list of date sections of archive