> >>>>> "MartinMo" == Martin Morgan <
mtmorgan@...>
> >>>>> on Mon, 20 Jul 2009 18:57:33 -0700 writes:
>
> MartinMo> L L <
lmlahti@...> writes:
> >> Ok, I could solve also the latter problem by defining show.myclass
> function in
> >> the zzz.R file and adding the line 'S3method(show,myclass)' into
> NAMESPACE
> >> file. Now the package passes all checks.
>
> MartinMo> I would have, in NAMESPACE,
>
> MartinMo> importFrom(methods, show)
> MartinMo> exportMethods(show)
>
> MartinMo> and in some file in R/
>
> MartinMo> setMethod(show, "myclass", function(object) {
> MartinMo> cat("here I am\n")
> MartinMo> })
>
> MartinMo> Do not try to make an S3 method on an S4 generic,
> MartinMo> or to create a new S4 generic for show. Since
> MartinMo> you've defined a method on show, you need to add
> MartinMo> documentation in a file in man/ (your choice; I'd
> MartinMo> add the documentation to the myclass documentation
> MartinMo> page). You only get one
> MartinMo> \alias{show,myclass-method}.
>
> MartinMo> Martin
>
> Yes, indeed!
> I'm just ``signing'' Martin Morgan's very good advice.
>
> In case it was explicit enough:
> do *NOT* define show.myclass() [which is an S3 method for an
> S4 generic and S4 class ..]
>
> Martin Mächler
>
>
> >> The information on how to exactly extend existing methods and include
> new
> >> methods/classes into a package is available but rather scattered in
> the web. A
> >> step-by-step tutorial written by an experienced user who is aware of
> best
> >> practices etc. would be rather useful for a beginner.
> >> best regards
> >> Leo
> >>
> >>
> >> On Mon, Jul 20, 2009 at 7:09 PM, L L <[[
lmlahti@...]]> wrote:
> >>
> >> Thanks, the issue was solved by adding class definitions to the
> >> zzz.R file in the R code directory. However, this led to a new
> >> problem.
> >> The zzz.R now contains class definition:
> >> > setClass("myclass", contains = "list")
> >> and method definition for the new class, extending the generic
> >> show':
> >> > setGeneric("show",function(x,...){standardGeneric("show")}) >
> >> setMethod("show", "myclass",function(x, ...) {cat("myclass object
> >> \n")})
> >> I get two warnings. The first one:
> >> * checking Rd files ... WARNING Rd files with duplicated alias
> >> show,myclass-method': myclass-class.Rd show-methods.Rd
> >> I get this one because the alias row for the method
> >> (\alias{show,myclass-method}) is in both myclass-class.Rd file and
> >> show-methods.Rd file (created by promptMethods function). This is
> >> likely related to the second warning:
> >> * checking for missing documentation entries ... WARNING
> Undocumented
> >> code objects: show
> >> I thought that the show method would've been documented correctly as
> >> I put 'show-methods.Rd' file in the 'man' directory. This does not
> >> seem to be the case, however.
> >> Any help on how I should document the extended show method in this
> >> case, or are there some mistakes in my original definition for
> >> extended 'show'? I could not find suitable examples from the
> >> web/mailing lists.
> >> br Leo
>
>