Learn R Programming

Rcpp (version 0.7.7)

RcppParams: C++ class for receiving (scalar) parameters from R

Description

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.

Usage

val <- RcppParamsExample(params)

Arguments

params
A heterogeneous list specifying method (string), tolerance (double), maxIter (int) and startDate (Date in R, RcppDate in C++).

Value

  • RcppExample returns a list containing:
  • methodstring input paramter
  • tolerancedouble input paramter
  • maxIterint input parameter
  • startDateDate type with starting date
  • paramsinput parameter list (this is redundant because we returned the input parameters above)

Details

Usage of 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.

See Also

RcppExample, the vignette RcppAPI.

Examples

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