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
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
.
RcppResultSet
. See the RcppExamples-package for examples of the
recommended
# 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