RcppVector
, RcppMatrix
and RcppStringVector
are
C++ classes defined in Rcpp.h
that can
pass vectors (matrices) of Robjects of appropriate types to C++ via
the .Call()
function interface.
The vector and matrix types are templated and can operate on Rtypes
intger
and numeric
.
Member functions are provided to query the dimension of the vector or
matrix object, convert it in a corresponding C
representation,
and also to convert it into a corresponding STL object.RcppVector
, RcppMatrix
and
RcppStringVector
in C++
is fully defined in
Rcpp.h
. As example, consider a call from Rto C++
such as
# an R example passing one type of each class to a function # someFunction in package somePackage val <- .Call("someFunction", rnorm(100), # numeric vector sample(1:10, 5, TRUE) # int vector search(), # character vector as.matrix(rnorm(100),10,10), # matrix PACKAGE="somePackage")
At the C++
level, the corresponding code to assign these parameter to
C++
objects is can be as follows (taken from the C++ source of
RcppExample
):
SEXP someFunction(SEXP nvec, SEXP ivec,
SEXP svec, SEXP nmat) {
RcppVector
These C++
objects could then be queried via
int n = nv.size();
int d1 = nm.dim1(), d2 = nm.dim2();
to retrieve, respectively, vector length and matrix dimensions.
Moreover, the stlVector()
and stlMatrix()
member
functions can be used to convert the objects into STL objects:
vector
RcppExample
, the vignette # set up some value
vector <- (seq(1,9))^2
# call the underlying C++ function
result <- RcppVectorExample(vector)
# inspect returned object
result
Run the code above in your browser using DataLab