在循环相等大小的XTS对象和R矩阵时进行子选择会产生巨大的性能差异。在我的机器上,以下示例中的矩阵代码需要0.42秒,而XTS代码需要31.64秒。假设我必须像这样进行循环,我应该预先使用as.matrix将所有的XTS对象转换为矩阵,还是有一种方法可以从xts对象获得更高的性能?
library(xts)
NumRows <- 1000000
NumCols <- 30
theMatrix <- matrix(rep(1,NumRows*NumCols),nrow=NumRows)
theXTS <- xts(theMatrix,Sys.Date()+1:NumRows)
system.time({
for(k in 1:NumRows){
DataPoint <- theMatrix[k,1]
}
})
system.time({
for(k in 1:NumRows){
DataPoint <- theXTS[k,1]
}
})