鉴于以下基本数据:
x <- xts(1:1000, as.Date("2000-01-01")+1:1000)
head(x)
[,1]
2000-01-02 1
2000-01-03 2
2000-01-04 3
2000-01-05 4
2000-01-06 5
2000-01-07 6
x.subset <- x["2000-02-05 00:00:00/2000-03-10 00:00:00"]
head(x.subset)
[,1]
2000-02-05 35
2000-02-06 36
2000-02-07 37
2000-02-08 38
2000-02-09 39
2000-02-10 40
问题是如何在Rcpp中直接进行这种类型的子集设置?
// [[Rcpp::export]]
RObject subsetRcpp(const Rcpp::NumericMatrix& x)
{
return wrap(x(1,_));
}
return wrap(x(_,0));
返回整个向量或列,但我最大的问题是,它只包含数据并剥离XTS索引和其他属性。我期待的是
x[,1]
在R。
返回换行符(x(y.begin(),y.end());
我有一个编译错误,例如:
no match for call to '(Const NumericMAtrix {aka const Rcpp::Matrix,14.}) (Rcpp::Range, Rcpp::Range)'
或
no match for call to '(Const NumericMAtrix {aka const Rcpp::Matrix,14.}) (Rcpp::const_iterator, Rcpp::const_iterator)'
return wrap(x(0, 5));
它可以编译,但R在运行时崩溃。
我一直无法找到任何代码样本,我可以得到预期的工作。
所以我现在有了一个更简单的目标。我正在尝试用Rcpp复制以下基本R命令:
x[1,]
[,1]
2000-01-02 1
x[,1] # The entire column.
x[1:5,1:1]
[,1]
2000-01-02 1
2000-01-03 2
2000-01-04 3
2000-01-05 4
2000-01-06 5
日期和其他xts属性保持不变。