[Rd] Documentation for S3 generics
    Gorjanc Gregor 
    Gregor.Gorjanc at bfro.uni-lj.si
       
    Mon Aug  7 12:51:58 CEST 2006
    
    
  
From: Martin Maechler [mailto:maechler at stat.math.ethz.ch]
>>>>> "Gorjanc" == Gorjanc Gregor <Gregor.Gorjanc at bfro.uni-lj.si>
>>>>>     on Mon, 7 Aug 2006 11:59:31 +0200 writes:
    Gorjanc> Hello!
    Gorjanc> Say I have 
    Gorjanc> myMethod <- function(x, ...)
    Gorjanc> UseMethod("myMethod")
    Gorjanc> myMethod.classA <- function(x, ...)
    Gorjanc> ...
    Gorjanc> myMethod.classB <- function(x, ...)
    Gorjanc> ...
    Gorjanc> myMethod.classC <- function(x, arg2, ...)
    Gorjanc> ...
    Gorjanc> and I would like to properly document these as generics. Then I have to
    Gorjanc> use in usage section
    Gorjanc> \method{myMethod}{classA}(x, ...)
    Gorjanc> \method{myMethod}{classB}(x, ...)
    Gorjanc> \method{myMethod}{classC}(x, arg2, ...)
    Gorjanc> But is it really necessary to have the same documentation for myMethod.classA
    Gorjanc> and myMethod.classB? 
> If you do export the methods from your package by
> either
> - not using NAMESPACE    or
> - exporting them explicitly in NAMESPACE,
> 
> then you have to document them.
> 
> Most newer "good" R packages use NAMESPACE though,
> and the convention is to export only those S3 methods that have
> ``surprising arguments''
> 
> i.e., arguments that are not part of the generic
> (where all the generic's arguments are documented).
>
> For your situation:
> 
> 1) use  <pkg>/NAMESPACE
> 2) only export    myMethod.classC \ because only that 
> 3) only document  myMethod.classC / method has surprising arguments
> 
Huh, I hoped for a more "generic" answer. My situation is not "so simple"
as described above as I have
myMethod.classA <- function(x, arg1, arg2, ...)
...
myMethod.classB <- function(x, arg1, arg2, ...)
...
myMethod.classC <- function(x, arg1, arg2, arg3...)
And yes I do use NAMESPACE and I export all methods explicitely. You
are saying that there is no need to export methods that do not have
``surprising arguments'', but how can a user use them if they are not
exported --> so method dispatch can access methods that are not
exported?
Are you still recommending 1), 2) and 3) above?
Thank you very much!
Gregor
    
    
More information about the R-devel
mailing list