[Rcpp-devel] times, dates, etc .... in the new apis

Dirk Eddelbuettel edd at debian.org
Wed Jan 27 04:01:54 CET 2010

On 26 January 2010 at 20:25, Romain Francois wrote:
| What about something like :
| class Rcpp::Date similar to RcppDate.
| and :
| as<Date>(SEXP)
| as<vector<Date>>(SEXP)
| wrap<Date>(const Date& date)
| wrap<vector<Date>>(const vector<Date>& date)

Yes. That is probably desirable. 

| and maybe perhaps also:
| as<time_t>(SEXP)
| as<vector<time_t>>(SEXP)
| wrap<time_t>( const time_t& t)
| wrap<vector<time_t>>( const vector<time_t>& t)

That is trickier. 'time_t' stops at second resolution, POSIXct uses just one
double yet also managed microsecond granularity thanks to BDR. R is
non-standard here so it is tricky to mesh that with C++.  In some
applications I simply kept time as a fractional double at the C++ level and
simply casted it to POSIXct once at the R level.

TZ transitions and accidentally dropping TZ can be tiocky.
| We probably not need additional Rcpp:: classes (apart maybe from Date) 
| here, so that all the wrap versions above could return a NumericVector 
| but setting the attributes differently.

We might for Datetime. I'd say let's not rush this, we have other things we
know we have to knock off first.

| ... actually now that I think of it, for Date we should just have to 
| create:
| - operator SEXP()
| - Date(SEXP)
| in order to get as and wrap for free (could be a good example for what 
| the NEWS pretends.

That would be elegant indeed.  And Date is 'just' an int relative to given offsets.  

Three out of two people have difficulties with fractions.

More information about the Rcpp-devel mailing list