我有一个大约2mil行的xts对象。我正在尝试在width=10000中使用rollapply。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]))
}你确定还有更好的办法吗?
发布于 2012-08-12 09:10:18
看起来内存消耗是在zoo:::rollapply.zoo中的mapply调用期间发生的。有一个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")https://stackoverflow.com/questions/11918819
复制相似问题