0

我想zoo使用 C++ 将数据从对象传递到我的程序中Rinside,但我不知道如何传递日期。

这是一个例子

 RInside R(argc, argv);              // create an embedded R instance


std::string cmd = "suppressMessages(library(zoo)); "
                  "z <- zoo(rnorm(10), as.Date('2000-01-01') - 0:10);"; 

R.parseEvalQ(cmd); 

 std::vector<double> v = Rcpp::as< std::vector< double > >(R.parseEval("coredata(z)"));
Rcpp::DateVector   d ( (SEXP) R.parseEval("index(z)") );

std::vector<boost::gregorian::date> dt =   //How assign d to dt ?
4

1 回答 1

1

你需要在RcppBDT 包中这样的简单转换器:

template <> boost::gregorian::date as( SEXP dtsexp ) {
    Rcpp::Date dt(dtsexp);
    return boost::gregorian::date(dt.getYear(), dt.getMonth(), dt.getDay());
}

然后您需要对其进行矢量化。或者,也许使用整数向量(自纪元以来的天数)。

编辑:有一个完整的 Rcpp Gallery 帖子致力于此,以及其他几个相关主题的处理。

于 2015-07-07T10:21:02.733 回答