Seamless R and C++ Integration
The Rcpp package provides R functions and a C++ library facilitating the integration of R and C++.
R data types (SEXP) are matched to C++ objects in a class hierarchy. All R types are supported (vectors, functions, environment, etc ...) and each type is mapped to a dedicated class. For example, numeric vectors are represented as instances of the Rcpp::NumericVector class, environments are represented as instances of Rcpp::Environment, functions are represented as Rcpp::Function, etc ... The Rcpp-introduction vignette (also published as a JSS paper) provides a good entry point to Rcpp as do the Rcpp website, the Rcpp page and the Rcpp Gallery. Full documentation is provided by the Rcpp book.
Conversion from C++ to R and back is driven by the templates Rcpp::wrap and Rcpp::as which are highly flexible and extensible, as documented in the Rcpp-extending vignette.
Rcpp also provides Rcpp modules, a framework that allows exposing C++ functions and classes to the R level. The Rcpp-modules vignette details the current set of features of Rcpp-modules.
Rcpp includes a concept called Rcpp sugar that brings many R functions into C++. Sugar takes advantage of lazy evaluation and expression templates to achieve great performance while exposing a syntax that is much nicer to use than the equivalent low-level loop code. The Rcpp-sugar gives an overview of the feature.
Rcpp attributes provide a high-level syntax for declaring C++ functions as callable from R and automatically generating the code required to invoke them. Attributes are intended to facilitate both interactive use of C++ within R sessions as well as to support R package development. Attributes are built on top of Rcpp modules and their implementation is based on previous work in the inline package. See the Rcpp-atttributes vignettes for more details.
Documentation
The package ships with nine pdf vignettes.
Additional documentation is available via the JSS paper by Eddelbuettel an
2021-12-02 10:06:27
1.13MB
源码
c++
1