RcppEigen provides an interface from R to and from Eigen, a performant C++ template library for linear algebra, matrices, vectors, numerical solvers, and related algorithms. RcppEigen uses the Rcpp interface between R and C++.

Are there examples?

A few examples are over at the Rcpp Gallery. A simple one is

#include <RcppEigen.h>

// [[Rcpp::depends(RcppEigen)]]

using Eigen::Map;                       // 'maps' rather than copies
using Eigen::MatrixXd;                  // variable size matrix, double precision
using Eigen::VectorXd;                  // variable size vector, double precision
using Eigen::SelfAdjointEigenSolver;    // one of the eigenvalue solvers

// [[Rcpp::export]]
VectorXd getEigenValues(Map<MatrixXd> M) {
    SelfAdjointEigenSolver<MatrixXd> es(M);
    return es.eigenvalues();

which can be turned into a function callable from R via a simple


due to the two Rcpp directives to use headers from the RcppEigen package, and to export the getEigenValues() function -- but read the full post for details.

Is there more documentation?

The package is described in a Journal of Statistical Software paper. A preprint of the paper is included as the vignette.

Where do I get it?

The package is on CRAN

It is now also available via CRAN so

R> install.packages("RcppEigen")

should work. The source code repository on GitHub is available too.


RcppEigen is written by Doug Bates, Romain Francois, Dirk Eddelbuettel and Yixuan Qiu. It is maintained by Dirk Eddelbuettel.


RcppEigen is licensed under the GNU GPL version 2 or later. It includes Eigen which is (mostly) released under the Mozilla Public License (version 2).

Initially created: Thu Mar 11 11:14:31 CST 2010
Last modified: Thu Dec 22 10:40:10 CST 2016