R bindings for the xtensor C++ multi-dimensional array library.
-
xtensoris a C++ library for multi-dimensional arrays enabling numpy-style broadcasting and lazy computing. -
xtensor-renables inplace use of R arrays in C++ with all the benefits fromxtensor- C++ universal functions and broadcasting
- STL - compliant APIs.
- A broad coverage of numpy APIs (see the numpy to xtensor cheat sheet).
xtensor-r can be used either to author C++ extensions for R with Rcpp, or applications that embed the R interpreter with RInside.
#include <numeric> // Standard library import for std::accumulate
#define STRICT_R_HEADERS // Otherwise a PI macro is defined in R
#include "xtensor/xmath.hpp" // xtensor import for the C++ universal functions
#include "xtensor-r/rarray.hpp" // R bindings
#include <Rcpp.h>
using namespace Rcpp;
// [[Rcpp::plugins(cpp14)]]
// [[Rcpp::export]]
double sum_of_sines(xt::rarray<double>& m)
{
auto sines = xt::sin(m); // sines does not actually hold values.
return std::accumulate(sines.cbegin(), sines.cend(), 0.0);
}v <- matrix(0:14, nrow=3, ncol=5)
s <- sum_of_sines(v)
s
# prints 1.2853996391883833xtensor-r a header-only C++ library. It has been packaged for the mamba (or conda) package manager.
mamba install xtensor-r -c conda-forgextensor-r can be installed from source with cmake in any installation prefix. For example, on unix systems
cmake -D CMAKE_INSTALL_PREFIX=/prefix/path/ .
make
make installWe provide a R package for Xtensor on both conda and CRAN (Comprehensive R Archive Network). The packaging boilerplate for the R package is available at https://github.com/xtensor-stack/Xtensor.R.
To install the R package with conda:
conda install r-xtensor -c conda-forgeTo install the R package from CRAN:
R CMD INSTALL xtensoror from the GitHub repository using devtools
devtools::install_github("xtensor-stack/Xtensor.R")The CRAN package vendors the headers for xtensor-r, xtensor, xtlandxsimd`.
To get started with using xtensor-r, check out the full documentation
http://xtensor-r.readthedocs.io/
xtensor-r depends on the xtensor and Rcpp libraries
xtensor-r |
xtensor |
Rcpp |
|---|---|---|
| master | ^0.25.0 | ^1.0 |
| 0.15.0 | ^0.25.0 | ^1.0 |
| 0.14.2 | ^0.24.4 | ^1.0 |
| 0.14.1 | ^0.24.0 | ^1.0 |
| 0.14.0 | ^0.24.0 | ^1.0 |
| 0.13.0 | ^0.23.0 | ^1.0 |
| 0.12.1 | ^0.21.4 | ^1.0 |
| 0.12.0 | ^0.21.2 | ^1.0 |
- Core
xtensorheaders are vendored in the CRAN package. - When using the conda, or debian package managers, xtensor-r has a dependency on xtensor.
We use a shared copyright model that enables all contributors to maintain the copyright on their contributions.
This software is licensed under the BSD-3-Clause license. See the LICENSE file for details.