RcppDate {Rcpp}R Documentation

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

Details

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.

Author(s)

Dominick Samperi wrote most of Rcpp during 2005 and 2006. Dirk Eddelbuettel made some additions, and became maintainer in 2008.

See Also

RcppResultSet, the vignette “RcppAPI”.

Examples


# 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

[Package Rcpp version 0.6.5 Index]