【发布时间】:2019-11-07 22:23:43
【问题描述】:
我希望围绕所有 1s 和 0s 创建集群。与 Mindsweeper 类似,我想基本上在所有 1s 周围“画一个圆圈”,并在 0s 存在的地方创建一个边框。
我曾尝试使用hclust() 并创建一个距离矩阵,但我正在使用的实际表非常大,而且我遇到了运行时问题。
test_matrix <- matrix(c( 1,1,0,0,0,0,1,
1,1,1,0,0,1,0,
0,1,0,0,0,1,0,
0,0,0,1,1,1,0,
0,0,0,1,1,1,1),nrow=5)
结果如下所示:
[,1] [,2] [,3] [,4] [,5] [,6] [,7]
[1,] 1 0 0 1 0 1 0
[2,] 1 1 0 0 0 1 1
[3,] 0 1 1 0 0 0 1
[4,] 0 1 0 0 0 0 1
[5,] 0 1 0 1 1 0 1
我的规则如下:如果任何1 通过上、下、左、右、对角(任何方向)连接到任何1,则继续增长“集群”。根据这些规则(每个点有 8 个连接点),我可以发现四个具有隔离 1s 的独特集群。
您将如何编写代码来查找这些组?
【问题讨论】:
-
请说明您想要的结果。 IE。 “结果看起来像这样”和“test_matrix”之间的联系是什么?无论如何,根据您 final 部分中的描述,听起来您正在寻找
library(raster);clump(raster(m))。如果是,相关:Extract sub-matrices from binary matrix in R -
能否指出以下答案是否解决了您的问题?
-
能否回复评论,要求澄清并提供潜在的解决方案?