Description Usage Arguments Details Value Examples
Call a function defined in the Stan Math Library from R using this wrapper around
cppFunction
.
1 2 3  stanFunction(function_name, ..., env = parent.frame(), rebuild = FALSE,
cacheDir = getOption("rcpp.cache.dir", tempdir()),
showOutput = verbose, verbose = getOption("verbose"))

function_name 
A 
... 
Further arguments that are passed to 
env,rebuild,cacheDir,showOutput,verbose 
The same as in 
The stanFunction
function essentially compiles and
evaluates a C++ function of the form
1 
It is essential to pass all arguments to function_name
through the ...
in order for the C++ wrapper to know what the argument types are. The mapping
between R types and Stan types is
R type  Stan type 
double  real 
integer  int 
vector  vector 
matrix(*, nrow = 1)  row_vector 
matrix  matrix

and, in addition, lists of the aforementioned R types map to arrays of Stan types and thus must not be ragged if they are nested. The Stan version of the function is called with arguments specified by position, i.e. in the order that they appear in the .... However, the R wrapper function has arguments whose names are the same as the names passed through the ....
The result of function_name
evaluated at the arguments
that are passed through the ..., which could be of various
R types. It also has the side effect of defining a function
named function_name
in the environment given by the
env
argument that can subsequently be called with
inputs of the same type (but not necessarily the same value)
that were passed through the ....
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39  files < dir(system.file("include", "stan", "math", "prim",
package = "StanHeaders"),
pattern = "hpp$", recursive = TRUE)
functions < sub("\\.hpp$", "",
sort(unique(basename(files[dirname(files) != "."]))))
length(functions) # you could call most of these Stan functions
## Not run:
log(sum(exp(exp(1)), exp(pi))) # true value
stanFunction("log_sum_exp", x = exp(1), y = pi)
args(log_sum_exp) # now exists in .GlobalEnv
log_sum_exp(x = pi, y = exp(1))
# but log_sum_exp() was not defined for a vector or matrix
x < c(exp(1), pi)
try(log_sum_exp(x))
stanFunction("log_sum_exp", x = x) # now it is
# log_sum_exp() is now also defined for a matrix
log_sum_exp(as.matrix(x))
log_sum_exp(t(as.matrix(x)))
log_sum_exp(rbind(x, x))
# but log_sum_exp() was not defined for a list
try(log_sum_exp(as.list(x)))
stanFunction("log_sum_exp", x = as.list(x)) # now it is
# in rare cases, passing a nested list is needed
stanFunction("dims", x = list(list(1:3)))
# nullary functions work but are not that interesting
stanFunction("negative_infinity")
# PRNG functions work by adding a seed argument
stanFunction("lkj_corr_rng", K = 3L, eta = 1)
args(lkj_corr_rng) # has a seed argument
## End(Not run)

Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.