[R-pkg-devel] Package can't be imported with Suggests

Dr. Jens Oehlschlägel jen@@oeh|@ch|@ege| @end|ng |rom truec|u@ter@com
Thu Aug 6 12:21:26 CEST 2020


Dirk,

This sounds familiar: in package 'bit' for  

bit | bitwhich 

R did neither S3-dispatch to "|.bit" nor to "|.bitwhich" but nonsensically to the default method. 

It took me a while to reverse my class thinking enough to realize that I could get control by forcing dispatch to a common class 'booltype'.  So far this sounds harmless. But the truth is that to make this work 'booltype' must not be a common superclass but needs to be a subclass of 'bit' in bit-objects and needs to be a subclass of 'bitwhich' in bitwhich-objects. Only then the dispatch to "|.booltype" dominates and we get a seemingly conflict-free dispatch to "|.booltype" which then resolves possible conflicts. I hope using R's S3 class system upside-down does not introduce "another problem". Citing from "Beautiful Code":

"
it is worth bringing our discussion to an end by noting that Lampson attributes the aphorism that started our exploration (all problems in computer science can be solved by another level of indirection) to David Wheeler, the inventor of the subroutine. Significantly, Wheeler completed his quote with another phrase: "But that usually will create another problem."
"

Best

Jens



#
> Gesendet: Donnerstag, 06. August 2020 um 01:30 Uhr
> Von: "Dirk Eddelbuettel" <edd using debian.org>
> An: "William Dunlap" <wdunlap using tibco.com>
> Cc: "r-package-devel using r-project.org" <r-package-devel using r-project.org>
> Betreff: Re: [R-pkg-devel] Package can't be imported with Suggests
>
> 
> On 5 August 2020 at 16:25, William Dunlap wrote:
> | You might make a second package that depends only on nimble and your
> | main package can then suggest that second package and JAGS.
> 
> Nice. "We can solve any problem by introducing an extra level of indirection."
> 
> See https://en.wikipedia.org/wiki/Fundamental_theorem_of_software_engineering
> 
> Dirk
>  
> | Bill Dunlap
> | TIBCO Software
> | wdunlap tibco.com
> | 
> | On Wed, Aug 5, 2020 at 3:36 PM Simon Bonner <simon.bonner using uwo.ca> wrote:
> | >
> | > Hi all,
> | >
> | > I’m wondering if someone an offer advice on a problem I’m facing in developing a package.
> | >
> | > My package essentially generates code and formats data for one of two MCMC sampling engines, JAGS accessed via rjags or nimble (a native R package), calls the engines, and then provides functions to access the results. Since only one of the engines is needed I would like to include rjags and nimble in Suggests in the DESCRIPTION and use requireNamespace() to load the appropriate package when its functionality is needed.
> | >
> | > Unfortunately, nimble will not work with this mechanism. It relies on a complex mechanism to compile C++ code to run the sampler, and some of the functions cannot be found when the package is loaded in this way. I’ve been in touch with the maintainers and they are aware of the issue but the current fix is to include the package under Depends. However, this forces a user to install nimble (which itself requires compiling lengthy C++ code) even if the user intends to run the sampler in JAGS.
> | >
> | > I thought I’d solved the problem by including nimble in Suggests and then loading it via library() so that all of its functions are attached. This works, but produces a note during the check:
> | > ❯ checking dependencies in R code ... NOTE
> | >   'library' or 'require' call to ‘nimble’ in package code.
> | >     Please use :: or requireNamespace() instead.
> | >     See section 'Suggested packages' in the 'Writing R Extensions' manual
> | >
> | > What is the recommendation?
> | >
> | > I see two options:
> | >
> | >
> | >   1.  Include nimble in Depends and force user to install it.
> | >   2.  Ignore the note and explain the problem when I resubmit to CRAN.
> | >
> | > Am I missing anything?
> | >
> | > Thanks in advance!
> | >
> | > Simon
> | >
> | >
> | >
> | >
> | >
> | > Simon Bonner
> | > Assistant Professor of Environmetrics
> | > Department of Statistical and Actuarial Sciences
> | > University of Western Ontario
> | >
> | > Office: Western Science Centre rm 276
> | >
> | > Email: sbonner6 using uwo.ca<mailto:sbonner6 using uwo.ca> | Telephone: 519-661-2111 x88205 | Fax: 519-661-3813
> | > Twitter: @bonnerstatslab | Website: http://simon.bonners.ca/bonner-lab/wpblog/
> | >
> | >
> | >         [[alternative HTML version deleted]]
> | >
> | > ______________________________________________
> | > R-package-devel using r-project.org mailing list
> | > https://stat.ethz.ch/mailman/listinfo/r-package-devel
> | 
> | ______________________________________________
> | R-package-devel using r-project.org mailing list
> | https://stat.ethz.ch/mailman/listinfo/r-package-devel
> 
> -- 
> https://dirk.eddelbuettel.com | @eddelbuettel | edd using debian.org
> 
> ______________________________________________
> R-package-devel using r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-package-devel
>



More information about the R-package-devel mailing list