Learn R Programming

Rcpp (version 0.7.7)

RcppVector: C++ classes for receiving R object in C++

Description

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.

Arguments

Details

Usage of 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 nv(nvec); RcppVector iv(ivec); RcppStringVector sv(svec); RcppMatrix nm(nmat); }

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 ivstl = iv.stlVector(); vector< vector< double > > = nm.stlMatrix();

See Also

RcppExample, the vignette RcppAPI.

Examples

Run this code
# 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