2

xtsは約2ミリ行のオブジェクトを持っています。で使用しようとしてrollapplyいますwidth=10000。rollapply がメモリ不足のようですが、その理由がわかりません。(入力してソースを見ようとしました> rollapplyが、これだけが表示されます:

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

rollapply は、各チャンクの 200 万から 10,000 のコピーを作成し、それらを 1 つずつ渡しますか? これは確かにメモリ不足になりますが、の作成者はそうしなかったと思いますzooか? もしそうなら、誰かが私のローリング適用を行うためのより賢い方法を知っていますか..私の現在の計画は、単にこれを行うことです:

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

}

確かに良い方法はありますか?

4

1 に答える 1

3

mapplyでの呼び出し中にメモリ消費が発生しているようですzoo:::rollapply.zoo。xtsrollapplyメソッドはありますが、エクスポートされていないため、メソッド ディスパッチ経由では呼び出されません。つまり、明示的に呼び出すことができます。

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

次のような場合に使用できるメソッドを確認するために使用methods(foo)します。

function(...)
  UseMethod("foo")
于 2012-08-12T01:10:17.683 に答える