如何用循环代替年份

时间:2016-12-24 13:14:50

标签: r

高级别观点:我必须计算每年1991:2016年20种股票的beta值。给出的数据是每月。

现在,我正在计算整个时间段内至少一个股票的beta计算步骤。我目前的代码如下:

for (i in 1991:2016) {
beta_NESN[i] <- CAPM.beta (window(monthly_ret[,2], "i-01-01", "i+1-01-01"), 
window(monthly_ret[,1], "i-01-01", "i+1-01-01")) 
}

数据样本:

                  .SSMI       NESN.S
1991-02-28   9.59247982   7.99342066
1991-03-31   4.38098619   7.76359676
1991-04-30   0.61047668   1.07850057
1991-05-31   4.78284255   4.77112010
1991-06-30  -4.49401631  -4.65200156
1991-07-31   3.70969856   2.46926126
1991-08-31   0.54275784  -2.23144902
1991-09-30  -4.22842516  -5.11682866
1991-10-31   1.14676046   3.80180672
1991-11-30  -3.70827307  -1.94416816
1991-12-31   2.88537039   5.37442760
1992-01-31   4.87302857   5.10025545
1992-02-29   4.84778148   3.68805355
1992-03-31  -0.18489320   0.84836140
1992-04-30   2.30822934   3.52733664
1992-05-31   2.13126703  -0.20408170
1992-06-30  -3.48607637  -0.61475603
1992-07-31  -3.10463217  -4.30512675
1992-08-31  -2.62008959  -1.95022432
1992-09-30   6.98374565   7.78521263
1992-10-31   1.73118801   3.67651938
1992-11-30   1.04625788   3.82821866
1992-12-31   8.71235635   8.54452060

执行后,我面临以下错误:

Error in merge.xts(..., all = all, fill = fill, suffixes = suffixes) : 
'NA' not allowed in 'index'

有人可以给我建议怎么做吗?如果我用'#34; i&#34;例如,1991年和1992年,但我希望存在另一种方法。

1 个答案:

答案 0 :(得分:0)

这应该有效:

   for (i in 1991:2016) {
    beta_NESN[i] <- CAPM.beta (window(monthly_ret[,2], paste0(i, "-01-01") , paste0(i+1, "-01-01")), 
    window(monthly_ret[,1], paste0(i, "-01-01") , paste0(i+1, "-01-01") )) 
    }