## RcppArmadillo: R and
Armadillo via Rcpp

### Synopsis

RcppArmadillo provides an interface from R to and from Armadillo by utilising the Rcpp R/C++ interface library.

### What is Armadillo?

Armadillo is a
high-quality linear algebra library for the C++ language, aiming towards
a good balance between speed and ease of use. It provides high-level
syntax and functionality
deliberately similar to Matlab (TM). See its website more information
about Armadillo.

### So give me an example!

Glad you asked. Here is a light-weight and fast implementation of
linear regression:

```
#include <RcppArmadillo/Lighter>
// [[Rcpp::depends(RcppArmadillo)]]
// [[Rcpp::export]]
Rcpp::List fastLm(const arma::mat& X, const arma::colvec& y) {
int n = X.n_rows, k = X.n_cols;
arma::colvec coef = arma::solve(X, y); // fit model y ~ X
arma::colvec res = y - X*coef; // residuals
double s2 = arma::dot(res, res) / (n - k); // std.errors of coefficients
arma::colvec std_err = arma::sqrt(s2 * arma::diagvec(arma::pinv(arma::trans(X)*X)));
return Rcpp::List::create(Rcpp::Named("coefficients") = coef,
Rcpp::Named("stderr") = std_err,
Rcpp::Named("df.residual") = n - k);
}
```

You can `Rcpp::sourceCpp()`

the file above to compile the function. A version is also included in
the package as
the `fastLm()`

function.

The `RcppArmadillo/Lighter`

header includes Rcpp via its `Rcpp/Lighter`

header which precludes some more compile-time heavy features such as
‘Rcpp Modules’ which we may not need. See the Rcpp docs more details about ‘Light’,
‘Lighter’ and ‘Lightest’. In the example above, the switch saves about
15% of total compilation time.

### Status

The package is mature yet under active development with releases to
CRAN about once every other
month, and widely-used by other CRAN packages as can be seen from the CRAN package
page. As of April 2024, there are 1135 CRAN packages using
RcppArmadillo.

### Documentation

The package contains a pdf vignette which is a pre-print of the paper by
Eddelbuettel and Sanderson in CSDA (2014), as well as an
introductory vignette for the sparse matrix conversions.

### Installation

RcppArmadillo is a CRAN
package, and lives otherwise in its own habitat on GitHub within the
RcppCore GitHub
organization.

Run

`install.packages("RcppArmadillo")`

to install from your nearest CRAN mirror.

### Authors

Dirk Eddelbuettel, Romain Francois, Doug Bates, Binxiang Ni, and
Conrad Sanderson

### License

GPL (>= 2)