[Rd] LazyLoad changes the class of objects

Gabor Grothendieck ggrothendieck at gmail.com
Fri Oct 12 09:04:30 CEST 2007

Consider a package that this DESCRIPTION file:

Package: tester
Version: 0.1-0
Date: 2007-10-12
Title: Prototype object-based programming
Author: Gabor Grothendieck
Maintainer: Gabor Grothendieck <ggrothendieck at gmail.com>
Description: test
LazyLoad: true
Depends: R (>= 2.6.0)
License: GPL2

and a single subdirectory R containing tester.R which contains two lines:

e <- new.env()
class(e) <- c("x", "environment")

Now issue these commands:

> library(tester)
> class(tester::e)
[1] "environment"

> R.version.string # Windows Vista
[1] "R version 2.6.0 Patched (2007-10-08 r43124)"

Note that the class of e was changed from what we set it to !!!

On the other handn, if we omit LazyLoad: true from the DESCRIPTION file
then it retains its original class.

> # removed LazyLoad: true line from DESCRIPTION and reinstall pkg
> # now its ok
> library(tester)
> class(tester::e)
[1] "x"           "environment"

More information about the R-devel mailing list