我有一个约{2}行的xts
个对象。我正在尝试将rollapply
与width=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]))
}
确定有更好的方法吗?
答案 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")