2014-09-05 165 views
0

我正在使用双循环来填充矩阵使用以下代码。使用双循环填充矩阵R

mat<-matrix(NA, nrow=2, ncol=2) 

for (i in 1:2){ 
for (j in 3:4){ 
    mat[i,j]<-c(i,j) 
    } 
} 
mat 

我得到的错误是:

Error in '[<-'('*tmp*', i, j, value = c(3L, 1L)) : 
    subscript out of bounds 

我在做什么错?

回答

1

所以这里有两个问题。首先你的内心for(...)循环引用列3:4,但只有2列。

其次,你定义的矩阵必须在元素中有单个值,但是你试图设置每个元素为一个向量。

如果你真的想要一个向量矩阵,你可以这样做。

mat<-matrix(list(c(NA,NA)), nrow=2, ncol=2) 
for (i in 1:2){ 
    for (j in 1:2){ 
    mat[i,j][[1]]<-c(i,j) 
    } 
} 
mat 
#  [,1]  [,2]  
# [1,] Integer,2 Integer,2 
# [2,] Integer,2 Integer,2 
mat[1,1] 
# [[1]] 
# [1] 1 1 
+0

谢谢你的回答。这解释了很多。我试图用expand.grid(1:2,3:4)来完成,但不恰当的做法。 – Alph 2014-09-05 16:22:43