The hardware and bandwidth for this mirror is donated by METANET, the Webhosting and Full Service-Cloud Provider.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]metanet.ch.
flexstanr gives a Stan-based R package one interface for fitting its models through either rstan or (optionally) cmdstanr. Your package supplies its own compiled models; flexstanr resolves them at run time, so the same fitting code works whichever backend is installed.
This vignette walks through wiring flexstanr into a host package and using it.
From the root of your Stan package, run the setup helper once:
This adds flexstanr (and rstan, the default
backend) to your Imports and, while flexstanr is still
pre-CRAN, an interim Remotes: ACCIDDA/flexstanr entry so
remotes / pak can install it from GitHub. Once
flexstanr is on CRAN, pass on_cran = TRUE to skip the
Remotes entry.
stan_options() collects and validates sampler arguments
for the chosen backend, forwarding them verbatim so a
call feels native to that backend:
opts <- stan_options(chains = 2, iter = 500, seed = 1)
str(opts)
#> List of 4
#> $ iter : int 500
#> $ seed : int 1
#> $ chains : int 2
#> $ backend: chr "rstan"Each backend has its own argument vocabulary, and mixing them is caught early with a “did you mean” hint rather than failing deep inside the sampler:
fit_model() dispatches to the backend recorded on the
options and resolves the compiled model by name from your package. A
host fitting one of its own models needs no extra arguments; the calling
package is detected automatically.
The backend_* accessors read a fitted object without
your code needing to know which backend produced it:
# posterior draws as an iterations x chains x parameters array
draws <- backend_draws_array(fit)
# named parameters, matching rstan::extract()'s shape
post <- backend_extract(fit, pars = c("beta", "sigma"))
# guard against the degenerate "no draws" case before using a fit
stopifnot(backend_has_draws(fit))Unrecognized objects pass through backend_has_draws() as
if they carry draws, so test doubles are left untouched:
Pass backend = "cmdstanr" to
stan_options(). cmdstanr is optional and not on CRAN, so
install it separately (see the cmdstanr getting-started guide);
selecting it without the package installed errors early with an
actionable message.
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.