rgen
-
C++ Headers for Sampling DistributionsThe repository houses random distribution sampling routines based in
armadillo
.
These routines connect into R’s seed generator using RcppArmadillo
.
This package was spun off from the r-to-armadillo
project as it contained more direct references to internal R
seeds.
Presently, rgen
provides random sample functionality
from:
Most notably, this is a header-only collection of functions. Therefore, this package can be linked to a pre-existing package instead of having to copy and paste the header files directly into your project’s source.
rgen
rgen
is currently only available on GitHub, but should
also be available on CRAN shortly.
To install the package, you must first have a compiler on your system that is compatible with R.
For help on obtaining a compiler consult:
With a compiler in hand, one can then install the package from GitHub by:
# install.packages("devtools")
::install_github("coatless/rgen") devtools
rgen
There are two ways to use rgen
. The first is to use
rgen
in a standalone script. The script is typically built
using sourceCpp()
. The second approach allows for
rgen
to be used within an R package.
Within the C++
file, the rgen
package
provides an Rcpp plugins’ depends statement that must be included after
rgen.h
header. This plugin statement indicates that a
dependency is rgen
.
#include <RcppArmadillo.h>
// [[Rcpp::depends(RcppArmadillo)]]
#include <rgen.h>
// [[Rcpp::depends(rgen)]]
Note: Since rgen
relies upon
RcppArmadillo
, you must include the
RcppArmadillo.h
header and include the traditional
Rcpp dependency attribute,
e.g. // [[Rcpp::depends(RcppArmadillo)]]
.
For example, the following would allow for you to sample from an inverse wishart distribution:
#include <RcppArmadillo.h>
// [[Rcpp::depends(RcppArmadillo)]]
#include <rgen.h>
// [[Rcpp::depends(rgen)]]
// Surface the riwishart function in the rgen package into R.
// [[Rcpp::export]]
::mat riwishart(unsigned int df, const arma::mat& S) {
armareturn rgen::riwishart(df, S);
}
/*** R
# Set seed for reproducibility
set.seed(111)
# Call the C++ function from R
riwishart(3, diag(2))
*/
To use rgen
in your R package, modify the
DESCRIPTION
file by adding:
LinkingTo: Rcpp, RcppArmadillo, rgen
Imports:
Rcpp (>= 0.12.10)
To use C++11
, you may wish to add the
following to your src/Makevars
and
src/Makevars.win
file:
CXX_STD = CXX11