我正在创建基于 xts 对象的比例表。由于这是一个(不幸的是)需要大约 10^6 个循环的大型程序的一部分,它造成了相当大的瓶颈,我想加快它的速度。
这是我开始的一个例子:
library(quantmod)
test.xts <- xts(sample(seq(1,5, by=.5), 50, replace=T), as.Date(1:50))
system.time(for(i in 1:10000){
prop.table(table(test.xts))
})
>user system elapsed
19.86 0.00 18.58
我已经将 xts 更改为矩阵,从而显着提高了速度。我只提到它最初是一个 xts,以防我错过了 xts 的某些东西,这些东西会加快速度,超出我已经看到的将其转换为矩阵的增益。
test.mat <- as.matrix(test.xts)
system.time(for(i in 1:10000){
prop.table(table(test.mat))
})
>user system elapsed
2.78 0.00 2.90
但我真的希望它尽可能快,所以我希望其他人有进一步改进的建议。我希望有一个明显的方法我忽略了。
另一条信息是,这些表的输出最终会与不同时间段的类似输出合并,因此维度需要保持命名。(即,我需要能够将时间 1 的“10”值的比例与时间 2 的“10”的比例相匹配)。
任何帮助是极大的赞赏。