【发布时间】:2017-04-12 06:59:58
【问题描述】:
我正在尝试从data.frame 中提取包含日期信息的向量并对其进行子集化。我能够从DataFrame 中成功提取DateVector;但是,我在尝试对数据进行子集化时收到错误消息。
考虑到DateVector 子集周围的/* */,以下工作正常。
Rcpp::cppFunction('
Rcpp::DataFrame test(DataFrame x, StringVector y ) {
StringVector New = x["string_1"];
std::string KEY = Rcpp::as<std::string>(y[0]);
Rcpp::LogicalVector ind(New.size());
for(int i = 0; i < New.size(); i++){
ind[i] = (New[i] == KEY);
}
Rcpp::StringVector st1 = x["string_1"];
Rcpp::StringVector Id = x["ID"];
Rcpp::StringVector NameId = x["NameID"];
Rcpp::DateVector StDate = x["StartDate"];
Rcpp::DateVector EtDate = x["EndDate"];
/*
Rcpp::DateVector StDate_sub = StDate[ind];
Rcpp::DateVector EtDate_sub = EtDate[ind];
*/
return Rcpp::DataFrame::create(Rcpp::Named("string_1") = st1[ind],
Rcpp::Named("ID") = Id[ind],
Rcpp::Named("NameID") = NameId[ind]/*,
Rcpp::Named("StartDate") = StDate_sub,
Rcpp::Named("EndDate") = EtDate_sub*/
);
}')
我收到了两个值得注意的错误:
错误:从 'Rcpp::LogicalVector {aka Rcpp::Vector}' 到 'int' [-fpermissive] 的用户定义转换无效
Rcpp::DateVector StDate_sub = StDate[ind]
第二个是:
没有从 'SEXP' 到 'int' 的已知转换 file585c1863151c.cpp:23:53:错误:请求从“Rcpp::Date”转换为非标量类型“Rcpp::DateVector {aka Rcpp::oldDateVector}”
Rcpp::DateVector EtDate_sub = EtDate[ind];
我查看了文档,但找不到方法。对不起,如果我错过了。我在data.frame 中有几个日期变量。我正在使用 Rcpp 在嵌套的 for 循环中对数据集进行子集化。目前,这需要太多时间。我无法在data.table 或dplyr 中实现它,因为某些处理需要子集数据集。
【问题讨论】:
-
看起来子集运算符实现在新旧
DateVector实现下都有问题:/