使用双循环填充R中的矩阵

时间:2014-09-05 14:08:44

标签: loops

我使用双循环使用以下代码填充矩阵。

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 个答案:

答案 0 :(得分: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