【问题标题】:Using double loop to fill a matrix in R使用双循环填充 R 中的矩阵
【发布时间】:2014-09-05 14:08:43
【问题描述】:

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

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

我做错了什么?

【问题讨论】:

    标签: loops


    【解决方案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
    

    【讨论】:

    • 感谢您的回答。这解释了很多。由于 expand.grid(1:2,3:4) 的结果,我试图用不恰当的方法来完成。
    猜你喜欢
    • 2017-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-29
    • 2013-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多