for循环中的尺寸不正确

for循环中的尺寸不正确,r,dimensions,R,Dimensions,我已经为一个问题挣扎了两天,我就是不明白 input <- H_t <- matrix(rep(0,2515), 2515, 4) H_t[,1]=rnorm(2515) H_t[,2]=rnorm(2515) H_t[,3]=rnorm(2515) H_t[,4]=rnorm(2515) d=dim(H_t) Sigma=matrix(0,d[1]*4,4) for( i in 2:d[1]) for(k in seq(from=1, to=10057, by=4)) for(

我已经为一个问题挣扎了两天,我就是不明白

input <- H_t <- matrix(rep(0,2515), 2515, 4)
H_t[,1]=rnorm(2515)
H_t[,2]=rnorm(2515)
H_t[,3]=rnorm(2515)
H_t[,4]=rnorm(2515)

d=dim(H_t)
Sigma=matrix(0,d[1]*4,4) 
for( i in 2:d[1])
for(k in seq(from=1, to=10057, by=4))
for(l in seq(from=4, to=10060, by=4))
{
Sigma[k:l ,1:4]=cov(H_t[1:i,1:4]) ##here is the problem of dimensions
}

inputYes,R理解k和l的循环

使用您的代码并添加oppending和closing{},我们得到:

set.seed(101)
input <- H_t <- matrix(rep(0,2515), 2515, 4)
H_t[,1]=rnorm(2515)
H_t[,2]=rnorm(2515)
H_t[,3]=rnorm(2515)
H_t[,4]=rnorm(2515)

d=dim(H_t)
Sigma = matrix(0, d[1]*4, 4)

for(i in 2:d[1]){
  # i <- 2
  for(k in seq(from=1, to=10057, by=4)){
    # k <- 1
    for(l in seq(from=4, to=10060, by=4)){
      # l <- 4
      Sigma[k:l ,1:4] = cov(H_t[1:i,1:4]) ##here is the problem of dimensions
    }
  }
}
从评论中我清楚地看到,这应该是一个不断增长的窗口:

# start the growing and calculate the cov backwards looking
for(i in 1:(n-1)){
  present <- i + 1
  Sigma[k[i]:l[i], ] = cov(H_t[1:present, 1:4])
}
#开始增长并向后计算cov
对于(1中的i:(n-1)){

现在你在循环的最后一行有一个分号。这正确吗?对于(seq中的l(from=4,to=10060,by=4));对不起,没有。我在第一行有一个错误…你想用
rnorm
或类似的东西来替换数值吗?你想得到什么协方差?初始矩阵(输入)之间的协方差,由行
i-4
i
子集,还有什么呢?我希望H_t的协方差为1:i,所以1:2,1:3,1:4………1:2515。这样,对于2515个步骤中的每一个步骤,都有一个4x4矩阵。是的!我希望第二次迭代采用Sigma[5:8],第三次采用Sigma[9:12]以此类推。如果我一手做,然后自己固定值,它就可以工作。但是为什么不在循环中呢?它在第一行工作,但最后的4x4矩阵应该是cov(H_t[1:15,1:4])事实并非如此。我也遇到了同样的问题,为什么我要将代码更改为上面的代码。因此,您不是在寻找滚动窗口,而是在寻找一个扩展窗口!只需将
放在过去的
上,然后在那里放一个1。是的,很抱歉犯了这个错误!谢谢您的帮助!
# start the growing and calculate the cov backwards looking
for(i in 1:(n-1)){
  present <- i + 1
  Sigma[k[i]:l[i], ] = cov(H_t[1:present, 1:4])
}