所以我试图创建一个2000 * 2000矩阵,沿着对角线有50 * 50个零块,而其他地方都有1个零块。
这是我的意思的缩影。 a是一个6x6矩阵,带有1' s,每个块是一个2 * 2矩阵,沿对角线有零
a <- matrix(rep(1, times = 36), nrow = 6, byrow = TRUE)
a[1:2,1:2] <- 0
a[3:4,3:4] <- 0
a[5:6,5:6] <- 0
给予
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] 0 0 1 1 1 1
[2,] 0 0 1 1 1 1
[3,] 1 1 0 0 1 1
[4,] 1 1 0 0 1 1
[5,] 1 1 1 1 0 0
[6,] 1 1 1 1 0 0
当然,我选择的代码对于创建这么大的矩阵是不好的,因为我必须重复50次底部。
创建这种类型的矩阵会有什么更好的代码?
答案 0 :(得分:2)
rawr是对的,
a <- +!kronecker(diag(1, 3), matrix(1, 2, 2))
给出
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] 0 0 1 1 1 1
[2,] 0 0 1 1 1 1
[3,] 1 1 0 0 1 1
[4,] 1 1 0 0 1 1
[5,] 1 1 1 1 0 0
[6,] 1 1 1 1 0 0
和+!kronecker(diag(1, 40), matrix(1, 50, 50))
用2000 * 2000矩阵