2014-12-10 3 views
0
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,] 
} 

я попытался код, указанный выше, и я постоянно получаю это сообщение об ошибке «Ошибка в [<- (*tmp*, я,, значение = с (0,719138301056081, -1,96625516396033: нижний индекс вне границ»хранящие элементы в виде массива

могу ли я получить какие-либо идеи о том, как исправить ошибку

ответ

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.