xts中的rollapply耗尽了内存R.

时间:2012-08-12 00:31:57

标签: r apply xts zoo

我有一个约{2}行的xts个对象。我正在尝试将rollapplywidth=10000一起使用。 rollapply似乎耗尽内存,我无法搞清楚为什么? (我试着通过输入> rollapply查看来源,但只显示:

function (data, ...) 
 UseMethod("rollapply")
 <environment: namespace:zoo>

rollapply会创建200万 - 每个块的10,000个副本然后逐个传递它们吗?这肯定会导致内存耗尽,但我不认为zoo的创建者会这样做吗?如果是这样的话,那么有没有人知道一种更聪明的方式来进行滚动申请..我目前的计划就是这样做:

m <- vector()
for (i in 10001:nrow(my_xts)) {
   m <- c(m, my_fun(my_xts[i-10000:i]))

}
确定有更好的方法吗?

1 个答案:

答案 0 :(得分:3)

mapply zoo:::rollapply.zoo调用期间,内存消耗似乎正在发生。有一个xts rollapply方法,但它不会被导出,因此不会通过方法调度来调用它。也就是说,你可以明确地称之为:

my_xts <- .xts(1:1e5*1,1:1e5)
m <- xts:::rollapply.xts(my_xts, width=10000, FUN=sum)

使用methods(foo)查看遇到时可用的方法:

function(...)
  UseMethod("foo")