RcppParams {Rcpp} | R Documentation |
RcppParams
is a C++ class defined in Rcpp.h
that receive
any number of scalar parameters of types in a single named list object
from R through the .Call()
function.
The parameters can be of different types that are limited to the R
types numeric
, integer
, character
, logical
or Date
. These types are mapped into, respectively, the
corresponding C++ types double
, int
, string
,
bool
and Date
(a custom class defined by Rcpp
.
val <- RcppParamsExample(params)
params |
A heterogeneous list specifying method (string),
tolerance (double), maxIter (int) and startDate
(Date in R, RcppDate in C++). |
Usage of RcppParams
from R via .Call()
is as follows:
# an R example passing one type of each class to a function # someFunction in package somePackage val <- .Call("someFunction", list(pie=3.1415, magicanswer=42, sometext="foo", yesno=true, today=Sys.date()), PACKAGE="somePackage")
At the C++ level, the corresponding code to assign these parameter to C++ objects is
SEXP someFunction(SEXP params) { RcppParams par(params); double p = RcppParams.getDoubleValue("pie"); int magic = RcppParams.getIntValue("magicanswer"); string txt = RcppParams.getStringValue("sometext"); bool yn = RcppParams.getBoolValue("yesno"); RcppDate d = RcppParams.getDateValue("today"); // some calculations ... // some return values ... }As the lookup is driven by the names givem at the R level, order is not important. It is however important that the types match. Errors are typically caught and an exception is thrown.
The class member function checkNames
can be used to verify that the
SEXP
object passed to the function contains a given set of
named object.
RcppExample
returns a list containing:
method |
string input paramter |
tolerance |
double input paramter |
maxIter |
int input parameter |
startDate |
Date type with starting date |
params |
input parameter list (this is redundant because we returned the input parameters above) |
Dominick Samperi wrote most of Rcpp during 2005 and 2006. Dirk Eddelbuettel made some additions, and became maintainer in 2008.
RcppExample
, the vignette “RcppAPI”.
# set up some value params <- list(method='BFGS', tolerance=1.0e-5, maxIter=100, startDate=as.Date('2006-7-15')) # call the underlying C++ function result <- RcppParamsExample(params) # inspect returned object result