[Rd] str and s3 classes

Duncan Murdoch murdoch.duncan at gmail.com
Thu Jun 20 00:53:06 CEST 2013


On 13-06-19 4:44 PM, Hadley Wickham wrote:
> Hi all,
>
> Because str uses the generic version of length and names, it's
> currently very easy to create objects that break str:
>
> a <- structure(list(1:5), class = "a")
> length.a <- function(x) 2L
>
> str(a)
>
> b <- structure(list(1:5), class = "b")
> names.b <- function(x) character()
>
> str(b)
>
>
> These are obvious toy examples, but it is a real problem if you want
> to create a class that defines names or length in a meaningful way,
> that is incompatible with the underlying data structure.

There are a few problems in the package; I'm not sure if all of them 
have any effect, but it works if I fix them all:

  - you have both inst/doc and vignettes directories.  You should only 
have one of those.

  - Your vignette is named simple.rmd.  The list_files_with_type() 
function isn't looking for the .rmd extension; it only recognizes .Rmd.
That function is used for vignette() and browseVignettes(), but I think 
not for the HTML page you get to from help.start(). It should probably 
be fixed to work with the optional engines, which specify their own 
patterns.  I'll put it on the list of things to fix.

Duncan



More information about the R-devel mailing list