xts 中的 rollapply 内存不足 R

标签 r apply xts zoo

我有一个 xts 对象,大约有 200 万行。我正在尝试将 rollapplywidth=10000 一起使用。 rollapply 似乎内存不足,我无法弄清楚为什么? (我试图通过输入 > rollapply 查看源代码,但只显示了这个:

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

rollapply 是否会为每个 block 创建 200 万到 10,000 个副本,然后将它们一一传递?这肯定会导致它耗尽内存,但我不认为 zoo 的创建者会这样做?如果是这样的话,那么有谁知道更聪明的方法来进行我的滚动应用..我当前的计划就是简单地这样做:

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

}

确定有更好的方法吗?

最佳答案

看起来内存消耗是在 zoo:::rollapply.zoo 中的 maply 调用期间发生的。有一个 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")

关于xts 中的 rollapply 内存不足 R,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11918819/

相关文章:

r - 将 df$var 传递给函数时,是否可以获得 'var' 的名称?

r - 如何 pivot_longer 一组多列?以及如何从那种长格式返回到原来的宽格式?

r - 如何修复绘图中的轴以查看标题?

替换 na.locf.xts(与多列 xts 一起使用时速度极慢)

r - 如何将for循环与需要字符串字段的函数一起使用?

r - 计算与其他列的双重类别关联的列中的特定字符。根据频率仓迭代进行

r - 将逻辑运算符表与向量组合以生成组合列表

python - 如何从Python数据帧中行的前一个密集等级读取值

r - 使用 R 将每日数据转换为每周/每月数据

r - 用索引将xts/zoo对象写入csv