[R] S4 : setGeneric for classical methods
cgenolin at u-paris10.fr
cgenolin at u-paris10.fr
Sun Jul 27 09:27:34 CEST 2008
Martin Maechler <maechler at stat.math.ethz.ch> a écrit :
>>>>>> "CG" == Christophe Genolini <cgenolin at u-paris10.fr>
>>>>>> on Sat, 26 Jul 2008 12:12:12 +0200 writes:
>
> CG> Martin Maechler <maechler at stat.math.ethz.ch> a écrit :
> >>>>>>> "CG" == Christophe Genolini <cgenolin at u-paris10.fr>
> >>>>>>> on Tue, 22 Jul 2008 19:04:37 +0200 writes:
> >>
> CG> Prof Brian Ripley <ripley at stats.ox.ac.uk> a écrit :
> >> >> On Tue, 22 Jul 2008, cgenolin at u-paris10.fr wrote:
> >> >>
> >> >>> Hi the list (well, half of the list, only the one who
> >> >>> are not on holidays...)
> >> >>>
> >> >>> I am trying to make an S4 package. When I run it on a
> >> >>> console, everything seems ok. When I run R CMD check, I
> >> >>> got an error --- 8<
> >> >>> ----------------------
> >> >>> Error in setMethod("plot", "ClassX", function(x, y) { :
> >> >>> no existing definition for function "plot" --- 8<
> >> >>> ----------------------
> >> >>>
> >> >>> If I add
> >> >>> setGeneric("plot",function(x,y,...){standardGeneric("plot")})
> >> >>> in my code, then everything is OK.
> >> >>>
> >> >>> This is a surprise for me since I taught that we do not
> >> >>> need to redefine as generic the function that are
> >> >>> already generic, like "plot". Am I wrong ?
> >> >>
> >> >> Yes. And do read the error message. It says
> >> >>
> >> >> no existing definition for function "plot"
> >> >>
> >> >> so this is not if the function is S3 or S4 generic, but
> >> >> that no such function is visible.
> >> >>
> >> >> Looks like you forgot to declare a dependence on (or
> >> >> import) package graphics.
> >>
> CG> I would have forgot if I knew that I have to declare
> CG> such a dependence... Do we have to declare all the
> CG> depence to all the package ? To base ? To stats ?
> >>
> >> not to base, but to all other packages (since R can be loaded
> >> without any packages but base).
> >>
> CG> I thaught that the package that are include in R when we
> CG> start it had not to be include.
> >>
> >> You thought wrongly, and all our documentation mentions that you
> >> need to use 'Depends:' correctly (and 'Imports(..)' in
> >> NAMESPACE if you make use of one).
> >>
> >> {and please strongly note the correct spelling of "thought" !}
> >>
> >> Martin
>
> CG> I correct DESCRIPTION and NAMESPACE adding Depends and import.
> CG> But I still get the message :
>
> CG> checking for missing documentation entries ... WARNING
> CG> Undocumented S4 methods:
> CG> generic 'plot' and siglist 'ClassX'
>
> CG> I can't find what is wrong...
>
> well, it's a message about *documentation*
> and therefore not related to DESCRIPTION
> and not much related to NAMESPACE.
>
> It tells you that you don't have correct documentation for the
> plot method for ClassX.
>
What if I don't want to document this method? I did not put ClassX in
the export, I do not want the user to acces to it.
I want :
plot,ClassX-method -> private
ClassY-class -> public
plot,ClassY-method -> public
Is it possible ?
Christophe
> --> "Writing R Extensions",
> section 2.1.3 'Documenting S4 classes and methods'
>
> Regards,
> Martin
>
> CG> ----- DESCRIPTION ----- Package: packS4
> CG> Type: Package
> CG> Title: Toy example of S4 package
> CG> Version: 0.5
> CG> Date: 2008-07-22
> CG> Author: Christophe Genolini / INSERM U669
> CG> Maintainer: <genolini at u-paris10.fr>
> CG> Description: Package built to illustration package
> construction with S4
> CG> License: GPL (>=2)
> CG> LazyLoad: yes
> CG> Depends: methods, graphics
> CG> Collate: global.R ClassX.R ClassY.R ClassX-ClassY.R ClassZ.R
>
>
> CG> ------ NAMESPACE ------
> CG> export(
> CG> "classZ",
> CG> "functionClassicA"
> CG> )
> CG> exportMethods(
> CG> "getZ1",
> CG> "setZ1<-",
> CG> "publicA",
> CG> "plot"
> CG> )
> CG> exportClasses(
> CG> "ClassY",
> CG> "ClassZ"
> CG> )
>
> CG> import(graphics)
>
> CG> Christophe
>
>
>
>
> CG> ----------------------------------------------------------------
> CG> Ce message a ete envoye par IMP, grace a l'Universite Paris 10
> Nanterre
>
>
>
More information about the R-help
mailing list