我有一个10x10的矩阵,其中包含0和1,1通常会成簇出现。 我正在尝试将这些1的集群提取到它们自己的矩阵列表中。下面是我的起始矩阵:
field <- matrix(0,10,10)
field[3:4,3:4]<-1
field[6:7,7]<-1
field[7:8,8]<-1
field[8,6]<-1
field
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] 0 0 0 0 0 0 0 0 0 0
[2,] 0 0 0 0 0 0 0 0 0 0
[3,] 0 0 1 1 0 0 0 0 0 0
[4,] 0 0 1 1 0 0 0 0 0 0
[5,] 0 0 0 0 0 0 0 0 0 0
[6,] 0 0 0 0 0 0 1 0 0 0
[7,] 0 0 0 0 0 0 1 1 0 0
[8,] 0 0 0 0 0 1 0 1 0 0
[9,] 0 0 0 0 0 0 0 0 0 0
[10,] 0 0 0 0 0 0 0 0 0 0
我希望最终得到一个类似于下面列表的矩阵列表(用0的边框来形成矩形):
list(
field[2:5,2:5],
field[5:9,5:9]
)
[[1]]
[,1] [,2] [,3] [,4]
[1,] 0 0 0 0
[2,] 0 1 1 0
[3,] 0 1 1 0
[4,] 0 0 0 0
[[2]]
[,1] [,2] [,3] [,4] [,5]
[1,] 0 0 0 0 0
[2,] 0 0 1 0 0
[3,] 0 0 1 1 0
[4,] 0 1 0 1 0
[5,] 0 0 0 0 0
我甚至不知道这个概念的实现方式。是否有一些相关的软件包存在,或者有人能够提供做这件事情的帮助和解释?还是说这是不可能的?感谢您的帮助!
igraph
创建带有对角连接的格点图,丢弃与field==1
相对应的图节点,然后循环遍历子图。抱歉这不是一个完整的解决方案,但可能会让您有所启发。 - Spacedman