[Rd] S4 method dispatch sometimes leads to incorrect when object loaded from file?

Martin Morgan mtmorgan at fredhutch.org
Mon May 11 19:18:07 CEST 2015


On 05/10/2015 08:19 AM, Martin Morgan wrote:
> Loading an S4 object from a file without first loading the library sometimes (?,
> the example below and actual example involves a virtual base class and the show
> generic) leads to incorrect dispatch (to the base class method).
>
> The attached package reproduces the problem. It has

The package was attached but stripped; a version is at

   https://github.com/mtmorgan/PkgA

FWIW the sent mail was a multi-part MIME with the header on the package part

Content-Type: application/gzip;
  name="PkgA.tar.gz"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
  filename="PkgA.tar.gz"

 From http://www.r-project.org/mail.html#instructions "we allow application/pdf, 
application/postscript, and image/png (and x-tar and gzip on R-devel)" so I 
thought that this mime type would not be stripped?

Martin Morgan

>
> setClass("A")
> setClass("B", contains="A")
> setMethod("show", "A", function(object) cat("A\n"))
> setMethod("show", "B", function(object) cat("B\n"))
>
> with NAMESPACE
>
> import(methods)
> exportClasses(A, B)
> exportMethods(show)
>
> This creates the object and illustrated expected behavior
>
>    ~/tmp$ R --vanilla --slave -e "library(PkgA); b = new('B'); save(b,
> file='b.Rda'); b"
>    B
>
> Loading PkgA before the object leads to correct dispatch
>
>    ~/tmp$ R --vanilla --slave -e "library(PkgA); load(file='b.Rda'); b"
>    B
>
> but loading the object without first loading PkgA leads to dispatch to
> show,A-method.
>
>    ~/tmp$ R --vanilla --slave -e "load(file='b.Rda'); b"
>    Loading required package: PkgA
>    A
>
> Martin Morgan


-- 
Computational Biology / Fred Hutchinson Cancer Research Center
1100 Fairview Ave. N.
PO Box 19024 Seattle, WA 98109

Location: Arnold Building M1 B861
Phone: (206) 667-2793



More information about the R-devel mailing list