Я создаю таблицы пропорций на основе объекта 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
Но я действительно хотел бы, чтобы это было как можно быстрее, поэтому я надеюсь, что у других есть предложения по дальнейшим улучшениям. Я надеюсь, что есть очевидный подход, который я упускаю из виду.
Еще одна дополнительная информация заключается в том, что выходные данные из этих таблиц в конечном итоге объединяются с аналогичными выходными данными за другой период времени, поэтому измерения должны оставаться названными. (Т.е. мне нужно иметь возможность сопоставить пропорцию для значения «10» в момент времени 1 с пропорцией «10» во время 2).
Будем признательны за любую помощь.