i am trying to generate subsequent entries for Sn with this relation Sn=Sn-1 +Xn
my Xn is (1x2) matrix
Sn is (1x2) matrix
yn is a scalar
y=numeric()
s=matrix(0,nrow=1,ncol=2)
mu=(1,0)
cov= matrix(c(1,0,0,1),2,2)
invcov=solve(cov)
s[1,]=c(0,0)
for (i in 2:10){
x=mvrnorm(1,mu,cov)
s[i,]=s[i-1,]+x
y[i]=t(s[i,])%*%invcov%*%s[i,]
}
我尝试了上面的代码并且我不断收到此错误消息&#34; [<-
中的错误(*tmp*
,我,值= c(0.719138301056081,-1.96625516396033:下标超出范围&# 34;
我可以获得有关如何纠正错误的任何想法吗?
答案 0 :(得分:1)
你不能附加到这样的矩阵:
m <- matrix(0, nrow=1, ncol=2)
m[2,] <- c(1, 1)
#Error in `[<-`(`*tmp*`, 2, , value = c(1, 1)) : subscript out of bounds
您可以使用rbind
,但最好预先分配(您知道矩阵的最终大小):
m <- matrix(0, nrow=2, ncol=2)
m[2,] <- c(1, 1)
# [,1] [,2]
#[1,] 0 0
#[2,] 1 1
这样你也可以避开R-Inferno的第二圈。