Skip to content

xtensor-stack/xtensor-r

Repository files navigation

xtensor-r

GHA LinuxGHA OSXGHA WindowsDocumentationZulip

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

  • xtensor is a C++ library for multi-dimensional arrays enabling numpy-style broadcasting and lazy computing.

  • xtensor-r enables inplace use of R arrays in C++ with all the benefits from xtensor

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<numeric>// Standard library import for std::accumulate #defineSTRICT_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>usingnamespaceRcpp;// [[Rcpp::plugins(cpp14)]]// [[Rcpp::export]]doublesum_of_sines(xt::rarray<double>& m){auto sines = xt::sin(m); // sines does not actually hold values.returnstd::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:

R CMD INSTALL xtensor

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-rxtensorRcpp
master^0.27.0^1.0
0.17.0^0.27.0^1.0
0.16.0^0.26.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 xtensor headers are vendored in the CRAN package.
  • When using the conda, or debian package managers, xtensor-r has a dependency on xtensor.

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.

Packages

No packages published

Contributors 9