From edd at debian.org  Tue Dec 26 13:46:13 2017
From: edd at debian.org (Dirk Eddelbuettel)
Date: Tue, 26 Dec 2017 06:46:13 -0600
Subject: [Rd] Rscript fails with some packages (for example, h5)
In-Reply-To: <CAL109eMo37PYMgE8KV0rxBgCGe-6Z1NhPrsUiQJfqCoJXfk6CA@mail.gmail.com>
References: <CAL109eMo37PYMgE8KV0rxBgCGe-6Z1NhPrsUiQJfqCoJXfk6CA@mail.gmail.com>
Message-ID: <23106.17557.985432.335423@bud.eddelbuettel.com>


On 26 December 2017 at 15:24, Sun Yijiang wrote:
| After looking into C source code, I found that Rscript by default fills
| environment variable R_DEFAULT_PACKAGES with
| "datasets,utils,grDevices,graphics,stats", and it somehow fails some
| package like h5.
| 
| The problem here is, not setting R_DEFAULT_PACKAGES is equivalent to
| setting it to a magic value, it's really confusing.  I suggest remove this
| feature.

The more confusing part is that "methods" is missing 'by design' (as loading
methods is marginally more expensive that other packages). Ie for your script

   edd at bud:/tmp$ cat h5ex.R
   library(methods) 
   library(h5)
   name <- tempfile()
   f <- h5file(name)
   file.remove(name)
   edd at bud:/tmp$ Rscript h5ex.R
   [1] TRUE
   edd at bud:/tmp$

it all works if you just add `library(methods)` as seen in the first line.

For what it is worth, littler's r does not need that as it loads methods just
like R itself does avoiding the confusion:

   edd at bud:/tmp$ cat h5ex2.R
   library(h5)
   name <- tempfile()
   f <- h5file(name)
   file.remove(name)
   edd at bud:/tmp$ r h5ex2.R
   edd at bud:/tmp$

Dirk

-- 
http://dirk.eddelbuettel.com | @eddelbuettel | edd at debian.org



[Rd] Rscript fails with some packages (for example, h5)
Dirk Eddelbuettel