RcppDate {Rcpp} | R Documentation |
RcppDate
, RcppDatetime
, RcppDateVector
and
RcppDatetimeVector
are C++ classes defined in Rcpp.h
that can
pass scalars and vectors of of R objects 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.
R objects 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, R objects of type
POSIXct
and the RcppDatetime
and
RcppDatetimeVector
objects, are internally represented as
seconds since the epoch. However, R extends the POSIX standard by
using a double leading to microsecond precision in timestamps. This is
fully supported by Rcpp
as well.
Usage of the RcppDate
, RcppDatetime
(and their vector
extensions) in C++
is fully defined in Rcpp.h
.
As example, consider a call from R to 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
.
Dominick Samperi wrote most of Rcpp during 2005 and 2006. Dirk Eddelbuettel made some additions, and became maintainer in 2008.
RcppResultSet
, the vignette “RcppAPI”.
# 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