具有矩阵的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