[Bioc-devel] Importing generic functions from other pkgs and defining methods on them?

Wolfgang Huber huber at ebi.ac.uk
Fri Mar 9 12:34:10 CET 2007

Dear Seth,

thanks! That solves the problem. I had never understood what the
   if (!isGeneric("someFunc"))
idiom was good for, but I am pretty sure that at the time when I 
initially wrote the package it was necessary. Good thing it's gone now.

I followed all your recommendation, exported plotPenLL and added more 

Best wishes

Wolfgang Huber  EBI/EMBL  Cambridge UK  http://www.ebi.ac.uk/huber

> Hello again,
> I think I have a solution for you.  You need to remove the conditional
> definition of the generics.
> I know that at some point in the past one needed to do things like
> this:
>    if (!isGeneric("someFunc"))
>        setGeneric("someFunc", ...)
> But this is no longer required and it seems to cause problems if it is
> there.  I simply removed the if's in your AllGenerics.R and then the
> package built and checked for me.
> I don't completely understand what was going on, but some parts of
> your code were not getting the generic when it was needed.
> The if (!isGeneric) idiom is rather odd if you think about it.  The
> only sensible way to define a method on a generic is if you know a
> fair bit about that generic (e.g., what its formal arguments are).
> When you optionally don't define your own generic and then set a
> method, who knows what the generic will be....
> So.  Remove the if(!isGeneric) and things should improve.
> Also, since I spent some time looking at the code:
>  * You should add a .onLoad function that does require("methods") as
>    per Writing R Extensions and use of S4 + NAMESPACE
>  * If you call plotPenLL in the vignette, perhaps you should export it
>    instead of using ':::'.
>  * You should add a Collate field to the DESCRIPTION file.  You are
>    getting a reasonable order at present, but since you have a lot of
>    R files, that luck is going to run out sooner or later.
>  * It is probably also worth adding import(method) to the NAMESPACE
>    file.  The rule, it seems, with the methods package, is that if
>    there is a place where you could possible ask to use it, then you
>    should (DESCRIPTION, .onLoad, NAMESPACE).
> Best Wishes,
> + seth

More information about the Bioc-devel mailing list