## 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.h>
// [[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.

### 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 January 2023, there are 1035 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)