我有一個xts
對象,大約2 mil行。我正在嘗試使用rollapply
和width=10000
。 rollapply似乎耗盡內存,我無法弄清楚爲什麼? (我試圖通過鍵入> rollapply
看看源代碼,但僅此顯示出來:xts中的內存溢出內存不足R
function (data, ...)
UseMethod("rollapply")
<environment: namespace:zoo>
不rollapply創造200萬組 - 每塊10000份,然後通過一個把它們放入一個這樣肯定會造成其?耗盡內存,但我不認爲zoo
的創造者會這樣做?如果是這樣的話,那麼有沒有人知道一個更聰明的方式來做我的滾動應用..我目前的計劃是簡單地做到這一點:
m <- vector()
for (i in 10001:nrow(my_xts)) {
m <- c(m, my_fun(my_xts[i-10000:i]))
}
肯定有一個更好的辦法?
您目前的計劃,使在一個循環中生長對象的大忌。您需要在循環前預先分配結果,並將每個函數的結果插入結果向量的第i個元素中。 – 2012-08-12 00:46:42
如果你的函數對應於其中的一個,動物園包已經優化了(對於速度而不是內存)'rollmean','rollmax'和'rollmedian',但它可能是其中一些或全部使用更少的內存。 – 2012-08-12 12:51:38