Rcpp如何将列(或行)添加到xts对象?

时间:2018-02-08 17:30:08

标签: r time-series rcpp xts

给出以下起始R代码:

x <- structure(
  c(10L, 10L, 11L, 12L, 10L, 10L, 10L, 11L, 11L, 12L, 13L, 11L, 11L, 11L),
  .Dim = c(7L, 2L), .Dimnames = list(NULL, c("Bid", "Ask")),
  index = structure(1:7, tzone = "", tclass = c("POSIXct", "POSIXt")),
  .indexCLASS = c("POSIXct", "POSIXt"), .indexTZ = "",
  tclass = c("POSIXct", "POSIXt"), tzone = "", class = c("xts", "zoo"))
a <- 0
a[1:nrow(x)]<-0
b = cbind(x,a)
                    Bid Ask ..2
1969-12-31 18:00:01  10  11   0
1969-12-31 18:00:02  10  11   0
1969-12-31 18:00:03  11  12   0
1969-12-31 18:00:04  12  13   0
1969-12-31 18:00:05  10  11   0
1969-12-31 18:00:06  10  11   0
1969-12-31 18:00:07  10  11   0

这在R中工作得非常好,但是我需要能够在Rcpp中做到这一点并且让它快速,最重要的是保留XTS对象参数。

Rcpp中有一个cbind函数,它会产生正确的输出,但会丢失所有XTS特征。

// [[Rcpp::export]]
Rcpp::NumericMatrix AddColumn(const Rcpp::NumericMatrix& X)
{
  int vector_size = PriceMatrix.nrow();
  NumericMatrix aa(vector_size,1);
  NumericMatrix res = cbind(X,aa);
  return wrap(res);
}
    [,1] [,2] [,3]
[1,]   10   11    0
[2,]   10   11    0
[3,]   11   12    0
[4,]   12   13    0
[5,]   10   11    0
[6,]   10   11    0
[7,]   10   11    0

相同的结果,但没有一个是什么使它成为xts对象。

如何在保留xts对象的同时执行添加列或行等基本操作?

0 个答案:

没有答案