我必须将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
答案 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)
}