[Rcpp-devel] [Rd] Sections 5.8.1 and 5.8.2 of Writing R Extensions (LinkingTo)
Simon Urbanek
simon.urbanek at r-project.org
Wed Oct 27 20:43:01 CEST 2010
On Oct 27, 2010, at 1:22 PM, Dominick Samperi wrote:
> Hello,
>
> In Sections 5.8.1 and 5.8.2 of Writing R Extensions the following pattern is
> suggested
> for getting the path to a file in another package:
>
> PKGB_PATH=Œecho ‚library(packB); cat(system.file("libs", package="packB"))‚
> \
> | ${R_HOME}/bin/R --vanilla --slaveŒ
>
> Is the library(packB) really needed here?
Not that I'm aware of - it's just a check that that package can be used. If you omit it you will get an empty string and no error on failure.
> It is not needed on two systems
> that
> I have tested: Windows and Linux. What about MacOS?
>
> If loading packB requires loading many other packages or doing expensive
> initialization it would be much more efficient if we could omit
> library(packB)
> here.
>
> On the other hand, keeping library(packB) has one possible advantage,
> namely,
> it may eliminate the need to add packB.dll to the loader's search path.
Not really since that sub-process will die when finished so it won't have any effect on any search path.
BTW: system.file("libs",...) doesn't do the job these days since it will be missing R_ARCH so you need something like
system.file("libs",.Platform$r_arch, package=...)
for any more recent R.
Cheers,
Simon
> So
> there
> is a trade-off of convenience vs efficiency.
>
> Thanks,
> Dominick
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
More information about the Rcpp-devel
mailing list