以数组格式存储元素

时间:2014-12-10 09:58:50

标签: r

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;

我可以获得有关如何纠正错误的任何想法吗?

1 个答案:

答案 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的第二圈。