Skip to content

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.

About

R bindings for xtensor

Topics

Resources

Stars

90 stars

Watchers

8 watching

Forks

Releases

Packages

Used by

Contributors

Languages