Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
具有矩阵的R中的双环_R_Matrix - Fatal编程技术网

具有矩阵的R中的双环

具有矩阵的R中的双环,r,matrix,R,Matrix,我知道我犯的错误,但我找不到任何解决办法。我正在编程一个双循环,用蒙特卡罗方法进行模拟 set.seed(-1256,normal.kind="Box-Muller") A <- matrix(Nsimul,85) for (k in 1:Nsimul) { r=c() r[1]=r0_CIR S=c() S[1]=I0 A[,1]=r0_CIR for(j in 1:NumPassi){ epsilon=rnorm(2,0,

我知道我犯的错误,但我找不到任何解决办法。我正在编程一个双循环,用蒙特卡罗方法进行模拟

set.seed(-1256,normal.kind="Box-Muller")
A <- matrix(Nsimul,85)
for (k in 1:Nsimul) {
    r=c()
    r[1]=r0_CIR
    S=c()
    S[1]=I0
    A[,1]=r0_CIR
    for(j in 1:NumPassi){
        epsilon=rnorm(2,0,1)
        r[j+1]= r[j]+alphaStar*(gammaStar-r[j])*Deltat + rho*sqrt(r[j])*epsilon[1]*sqrt(Deltat)
        if (r[j+1]<0) r[j+1]=abs(r[j+1])
        epsilon_S=epsilon[1]+sqrt(1-corr^2)*epsilon[2]
        S[j+1]=S[j]*exp((r[j]-sigma^2/2-div)*Deltat+sigma*epsilon_S*sqrt(Deltat))
        A[k,j+1]=r[j+1]
    }
}
当我尝试运行代码时,出现了以下错误

 Error in `[<-`(`*tmp*`, , j + 1, value = 0.0102279735166489) : subscript out of bounds

我不知道哪一个值超出了界限。

虽然你可以通过调用不存在的索引来递增向量,但这不是一个很好的做法,例如,我离题了

S<-c()
S[1]<-1
S
#[1] 1
您可能无法使用示例中矩阵A尝试使用的方法来执行此操作

这是我制作的一个矩阵示例

A<-matrix(1:10, nrow=5)
#         [,1] [,2]
#[1,]    1    6
#[2,]    2    7
#[3,]    3    8
#[4,]    4    9
#[5,]    5   10
如果我尝试

A[1,3]<-1
我明白了

虽然您的问题中有许多未定义的内容,例如A、Numsimul、Numpassi,因此我无法确定发生了什么,但第二个for循环的最后一行很可能就是问题所在。如果j的值大于矩阵A中的列数,则会抛出一个错误

在第二个for循环中设置列之前,必须先确保该列存在

#Error in A[1, 3] <- 2 : subscript out of bounds