给出以下起始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对象的同时执行添加列或行等基本操作?