3
require(quantmod)
require(PerformanceAnalytics)
getSymbols('INTC')
x<- monthlyReturn(INTC)
rollapply(1+x,12,cumprod)

上記のコードを考えると、このエラーが発生しました

Error in array(r, dim = d, dimnames = if (!(is.null(n1 <- names(x[[1L]])) &  : 
  length of 'dimnames' [1] not equal to array extent

x のクラスが実際に xts であることを確認できます。

class(x) [1] "xts" "動物園"

rollapply は xts/zoo オブジェクトで動作すると思います。ここで問題を解決する方法がわかりません。

助けてくれてありがとう。

アップデート

SessionInfo 出力:

R version 2.15.3 (2013-03-01)
Platform: i686-pc-linux-gnu (32-bit)

locale:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C               LC_TIME=en_US.UTF-8       
 [4] LC_COLLATE=en_US.UTF-8     LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8   
 [7] LC_PAPER=C                 LC_NAME=C                  LC_ADDRESS=C              
[10] LC_TELEPHONE=C             LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] PerformanceAnalytics_1.1.0 quantmod_0.4-0             TTR_0.22-0                
[4] xts_0.9-3                  zoo_1.7-9                  Defaults_1.1-1            

loaded via a namespace (and not attached):
[1] grid_2.15.3     lattice_0.20-13 tools_2.15.3   
4

2 に答える 2

5

rollapply.xts関数がローリング ウィンドウごとに 1 つの値を返すと仮定します。したがって、実際に何をしたいかによって、分割-適用-結合戦略と併用するprodrollapply.xts、併用する必要があります。cumprod

rollapply(1+x,12,prod)
do.call(rbind, lapply(split(1+x,"years"), cumprod))
于 2013-03-29T20:13:01.410 に答える
2

バグが見つかりました。回避策は次のとおりです。

z <- as.zoo(x)
dim(z) <- NULL
rollapply(1+z, 12, cumprod)
于 2013-03-29T20:27:32.160 に答える