GitHub - xtensor-stack/xtensor-r: R bindings for xtensor (original) (raw)

xtensor-r

Travis Appveyor Documentation Join the Gitter Chat

R bindings for the xtensor C++ multi-dimensional array library.

xtensor-r can be used either to author C++ extensions for R with Rcpp, or applications that embed the R interpreter with RInside.

Example

#include // 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& 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.2853996391883833

Installation

Installation of the standalone C++ library

xtensor-r a header-only C++ library. It has been packaged for the mamba (or conda) package manager.

mamba install xtensor-r -c conda-forge

xtensor-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 install

Installation of the R package

We 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-forge

To install the R package from CRAN:

or from the GitHub repository using devtools

devtools::install_github("xtensor-stack/Xtensor.R")

The CRAN package vendors the headers for xtensor-r, xtensor, xtlandxsimd`.

Documentation

To get started with using xtensor-r, check out the full documentation

http://xtensor-r.readthedocs.io/

Dependencies on xtensor and Rcpp

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

License

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.