使用R在矩阵中进行循环

时间:2017-11-16 03:31:14

标签: r

我必须将54个矩阵放在一个名为A的向量列表中。我希望此列表中的前25个矩阵为零矩阵,除了矩阵的第(i,j)个元素,它应该等于1。我所有的矩阵都是5x5。我正在使用for循环,但我不明白如何创建前25个矩阵。

现在我试图用(i:(i-1),j:(j-1))th元素= 1制作16个矩阵0,这样就有1的大小为2乘2的正方形。为此,我使用了以下代码,但我想确保' i'大于或等于2.我该怎么做?

    t<-26
for(i in 1:5){
   for(j in 1:5){
     A <- matrix(0, nrow = 5, ncol = 5)
    A[i:(i-1), j:(j-1)] <- 1
    M[[l]] <- A
    t <- t+1
   }
}
A

1 个答案:

答案 0 :(得分:2)

只是猜测你想要什么。如果这不是您想要的,请告诉我,然后我可以编辑或删除它。

A <- vector("list", 54)
mat <- matrix(0, nrow = 5, ncol = 5)

# assign mat to A and the 1 to the ith element of mat (column wise)
for (i in 1:25) {
  A[[i]] <- mat
  A[[i]][i] <- 1  
}

A[[1]]
# [,1] [,2] [,3] [,4] [,5]
# [1,]    1    0    0    0    0
# [2,]    0    0    0    0    0
# [3,]    0    0    0    0    0
# [4,]    0    0    0    0    0
# [5,]    0    0    0    0    0

A[[2]]
# [,1] [,2] [,3] [,4] [,5]
# [1,]    0    0    0    0    0
# [2,]    1    0    0    0    0
# [3,]    0    0    0    0    0
# [4,]    0    0    0    0    0
# [5,]    0    0    0    0    0

A[[25]]
# [,1] [,2] [,3] [,4] [,5]
# [1,]    0    0    0    0    0
# [2,]    0    0    0    0    0
# [3,]    0    0    0    0    0
# [4,]    0    0    0    0    0
# [5,]    0    0    0    0    1

插入1行(不是最优雅的方式)

# assing 1 the ith element of mat (column wise)
for (i in 1:25) {
  mat_1 <- mat
  mat_1[i] <- 1
  A[[i]] <- t(mat_1)
}