[Rd] Dates in C api

Oleg Sklyar osklyar at ebi.ac.uk
Wed Sep 17 22:03:23 CEST 2008


Dates are number of days since 1970-01-01 that is it.

to get data of Date in C:

library(inline)
code = 'Rprintf("%f", REAL(x)[0]); return R_NilValue;'
f = cfunction(signature(x="double"), body=code)
na = f(Sys.date())

to create an object of class Date:
--- in C ---
SEXP res = allocVector(REALSXP, n);
return res;
// one can assign class here, but one can also do it on return to R
--- in R ---
res = .Call("myDateFun", n)
class(res) = "Date"

Best,
Oleg

Lee, Philip (IT) wrote:
> r-devel,
> 
> I've been trying to write a C plugin for R, and I'm struggling to
> understand how dates are represented.
> 
> I can create a date in R:
>> mydate<-as.Date(1, origin="1900-01-01") mydate
> [1] "1900-01-02"
> 
> When I pass my date to a plugin, though, it's type is that of a real.
> There doesn't seem to be a date type in Rinternals.h, is there a way to
> recognize that a value is a date rather than a real?
> 
> Equally, does anyone know if it's possible to create date values in the
> C api?
> 
> Thanks,
> Phil Lee
> 
> Philip Lee
> Morgan Stanley | Technology
> 750 Seventh Avenue, 12th Floor | New York, NY  10019
> Phil.Lee at morganstanley.com
> --------------------------------------------------------
> 
> NOTICE: If received in error, please destroy and notify sender. Sender does not intend to waive confidentiality or privilege. Use of this email is prohibited when received in error.
> 
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel

-- 
Dr Oleg Sklyar * EBI-EMBL, Cambridge CB10 1SD, UK * +44-1223-494466



More information about the R-devel mailing list