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 Rthrough the .Call()
function.
The parameters can be of different types that are limited to the Rtypes 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
.
RcppParams
is part of the old deprecated Rcpp API, and should
be replaces by Rcpp::List
which is more flexible and can be
used for both inputs and outputs. RcppParams
is retained for
backwards compatibility, but should be avoided in new projects and
replaced in old projects. Note that the
method
(string),
tolerance
(double), maxIter
(int) and startDate
(Date in R, RcppDate in C++).RcppExample
returns a list containing:RcppParams
from Rvia .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 = par.getDoubleValue("pie"); int magic = par.getIntValue("magicanswer"); string txt = par.getStringValue("sometext"); bool yn = par.getBoolValue("yesno"); RcppDate d = par.getDateValue("today"); // some calculations ... // some return values ... } As the lookup is driven by the names givem at the Rlevel, 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
. See the RcppExamples-package for examples of the
recommended
# 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
Run the code above in your browser using DataLab