[Rd] Regarding the recent changes to @<-

Martin Maechler maechler at stat.math.ethz.ch
Mon Jan 14 19:39:10 CET 2013


>>>>> François Michonneau <francois.michonneau at gmail.com>
>>>>>     on Sun, 13 Jan 2013 18:34:36 -0500 writes:

    > Hello all,
    > In one of the packages (phylobase) I'm contributing to, we define a class
    > as follows:


> setClass("phylo4",
>          representation(edge = "matrix",
>                         edge.length = "numeric",
>                         label = "character",
>                         edge.label = "character",
>                         order = "character",
>                         annote = "list"),
>          prototype = list(
>                         edge = matrix(nrow = 0, ncol = 2,
>                             dimname = list(NULL, c("ancestor",
> "descendant"))),
>                         edge.length = numeric(0),
>                         label = character(0),
>                         edge.label = character(0),
>                         order = "unknown",
>                         annote = list()
>                        ),
>          validity = checkPhylo4)

>   Using today's SVN checkout (r61643), building an object of the class
> 'phylo4' like this:

> phylo4(foo, annote="bar")

>   doesn't return an error as it used to (given that annote is not a list).

Well, the above is not reproducible
{foo  and  checkPhylo4   are missing !}.

If I make it reproducible,
it does work, i.e., give an error for me (rev 61644):

phylo4 <- setClass("phylo4",
         representation(edge = "matrix",
                        edge.length = "numeric",
                        label = "character",
                        edge.label = "character",
                        order = "character",
                        annote = "list"),
         prototype = list(edge = matrix(nrow = 0, ncol = 2,
                                        dimnames = list(NULL,
                                        c("ancestor", "descendant"))),
                          edge.length = numeric(0),
                          label = character(0),
                          edge.label = character(0),
                          order = "unknown",
                          annote = list()
         )
         )##               ),
         ## validity = checkPhylo4)

foo <- phylo4()
phylo4(foo, annote="bar")

-----------

Gives

Error in validObject(.Object) : 
  invalid class "phylo4" object: invalid object for slot "annote" in class "phylo4": got class "character", should be or extend class "list"

as it should.

Can you try providing a simple reproducible example?


>   What is now the preferred way of checking that annote is a actually a
> list?

>   Thanks,
>   -- François

> 	[[alternative HTML version deleted]]



More information about the R-devel mailing list