Learn R Programming

RcppClassicExamples (version 0.1.0)

RcppDate: C++ classes for interfacing date and datetime R objects -- deprecated API

Description

RcppDate, RcppDatetime, RcppDateVector and RcppDatetimeVector are C++ classes defined in their respective headers files. They are part of the 'classic' Rcpp API. These classes pass scalars and vectors 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.

The new API currently has the classes Rcpp::Date, Rcpp::Datetime, Rcpp::DateVector and Rcpp::DatetimeVector which are preferred for new developments, as is the rest of the new API in the Rcpp package while the RcppClassic package has been deprecated since 2010.

Arguments

Details

Usage of the RcppDate, RcppDatetime (and their vector extensions) in C++ is fully defined in the respective header files RcppDate.h and RcppDatetime.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 RcppDate.h and RcppDatetime.h for details.

Objects of these types can also be returned via RcppResultSet.

References

Writing R Extensions, available at http:www.r-project.org.

See Also

RcppResultSet.

See the RcppExamples-package for examples of the recommended Rcpp API and Rcpp-package for documentation on the recommended API to extend R with C++ code, while the deprecated RcppClassic-package documents the older, deprecated API.

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