因此,我正在尝试创建一个 2000 * 2000 矩阵,该矩阵沿对角线具有 50*50 个零 block ,其他位置均为 1。
这是我的意思的一个微型例子。 a 是一个带 1 的 6x6 矩阵,每个 block 是一个 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 次。
创建此类矩阵的更好代码是什么?
最佳答案
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 矩阵解决了我原来的问题
关于r - 如何在对角线内的 block 中创建一个带有零的矩阵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50331873/