Add Stan infrastructure to an existing R package. To create a new package
containing Stan programs use rstan_create_package()
instead.
use_rstan(pkgdir = ".", license = TRUE, auto_config = TRUE)
Path to package root folder.
Logical or character; whether or not to paste the contents of
a license.stan
file at the top of all Stan code, or path to such a
file. If TRUE
(the default) adds the GPL (>= 3)
license (see
Details).
Whether to automatically configure Stan functionality
whenever the package gets installed (see Details). Defaults to TRUE
.
Invisibly, TRUE
or FALSE
indicating whether or not any files or
folders where created or modified.
Prepares a package to compile and use Stan code by performing the following steps:
Create inst/stan
folder where all .stan
files defining
Stan models should be stored.
Create inst/stan/include
where optional license.stan
file is stored.
Create inst/include/stan_meta_header.hpp
to include optional header
files used by Stan code.
Create src
folder (if it doesn't exist) to contain the Stan C++ code.
Create R
folder (if it doesn't exist) to contain wrapper code to expose
Stan C++ classes to R.
Update DESCRIPTION
file to contain all needed dependencies to compile
Stan C++ code.
If NAMESPACE
file is generic (i.e., created by rstan_create_package()
),
append import(Rcpp, methods)
, importFrom(rstan, sampling)
,
importFrom(rstantools, rstan_config)
, importFrom(RcppParallel, RcppParallelLibs)
,
and useDynLib
directives. If NAMESPACE
is not generic, display message
telling user what to add to NAMESPACE
for themselves.
When auto_config = TRUE
, a configure[.win]
file is added to the
package, calling rstan_config()
whenever the package is installed.
Consequently, the package must list rstantools in the DESCRIPTION
Imports field for this mechanism to work. Setting auto_config = FALSE
removes the package's dependency on rstantools, but the package then
must be manually configured by running rstan_config()
whenever
stanmodel
files in inst/stan
are added, removed, or modified.
The
stanmodel
objects corresponding to the Stan programs included with your
package are stored in a list called stanmodels
. To run one of the Stan
programs from within an R function in your package just pass the
appropriate element of the stanmodels
list to one of the rstan
functions for model fitting (e.g., sampling()
). For example, for a Stan
program "foo.stan"
you would use rstan::sampling(stanmodels$foo, ...)
.