Learn R Programming

Rcpp (version 0.7.7)

RcppDate: C++ classes for receiving date and datetime R objects in C++

Description

RcppDate, RcppDatetime, RcppDateVector and RcppDatetimeVector are C++ classes defined in Rcpp.h that can pass scalars and vectors of of Robjects of types Date and POSIXct, respectively, to C++ via the .Call() function interface. Member functions are provided to query the dimension of the vector or matrix object, convert it in a corresponding C representation.

Robjects of type Date, and hence the RcppDate and RcppDateVector objects, are internally represented as an integer counting days since the epoch, i.e. January 1, 1970. Similarly, Robjects of type POSIXct and the RcppDatetime and RcppDatetimeVector objects, are internally represented as seconds since the epoch. However, Rextends the POSIX standard by using a double leading to microsecond precision in timestamps. This is fully supported by Rcpp as well.

Arguments

Details

Usage of the RcppDate, RcppDatetime (and their vector extensions) 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", Sys.Date(), # current date Sys.time(), # current timestamp as.Date("2000-02-25") + 0:5, # date vector ISOdatetime(1999,12,31,23,59,0) + (0:5)*0.250, # datetime vector PACKAGE="somePackage")

At the C++ level, the corresponding code to assign these parameter to C++ objects is can be as follows:: SEXP someFunction(SEXP ds, SEXP dts, SEXP dvs, SEXP dtvs) {

RcppDate d(ds); RcppDatetime dt(dts); RcppDateVector dv(dvs); RcppDatetimeVector dtv(dtvs); }

Standard accessor functions are defined, see Rcpp.h for details.

Objects of these types can also be returned via RcppResultSet.

See Also

RcppResultSet, the vignette RcppAPI.

Examples

Run this code
# set up date and datetime vectors
dvec <- Sys.Date() + -2:2
dtvec <- Sys.time() + (-2:2)*0.5

# call the underlying  C++ function
result <- RcppDateExample(dvec, dtvec)

# inspect returned object
result

Run the code above in your browser using DataLab