Skip to content

[R-sig-dyn-mod] Using dynamically compiled code for use with deSolve in a new package

2 messages · Rampal S. Etienne, Thomas Petzoldt

#
Dear all,

I have written C and FORTRAN functions to use with deSolve and found 
that it works significantly faster than the analogous R functions. So 
far so good! However, now I want to build a package that uses this code. 
How do I do this? I can include the DLL in the package (so no more 
compilation by the user of the package, just loading it), but then the 
user needs to be able to find it. Where will this be installed? That may 
be different on different systems. Any suggestions?

Cheers, Rampal
#
Hi,

that's straightforward.

1) Put deSolve in Depends of your package DESCRIPTION:

Depends: deSolve


2) Import the solver function (e.g. ode or lsoda) in the NAMESPACE of 
your package and declare your dynamic library (.dll or .so)

importFrom(deSolve,ode)

useDynLib(mypackage)


3) and then use this .dll/.so in the call to ode():

ode(...., dllname = "mypackage", .....)


An example can be found in package growthrates:

https://github.com/tpetzoldt/growthrates/blob/master/pkg/R/grow_twostep.R

Hope it helps,

Thomas
On 11.06.2017 13:20, Rampal Etienne wrote: