Я хочу создать кластеры вокруг всех 1
с и 0
с. Как и в Mindsweeper, я хочу «нарисовать круг» вокруг всех 1
s и создать границу, в которой существует 0
s.
Я попытался использовать 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
через UP, DOWN, LEFT, RIGHT, DIAGONAL (любое направление), продолжайте увеличивать «кластер». Основываясь на этих правилах (8 точек подключения для каждой точки), я могу выделить четыре уникальных кластера с изолированными 1
с.
Как бы вы написали код, чтобы найти эти группы?