Eu tenho uma matriz que é preenchida com elementos discretos e preciso agrupá-los (usando R) em grupos intactos. Então, por exemplo, considere esta matriz:
[A B B C A]
[A A B A A]
[A B B C C]
[A A A A A]
Haveria dois clusters separados para A, dois clusters separados para C e um cluster para B.
A saída que estou procurando seria idealmente atribuir um ID exclusivo para cada cluster, algo como isto:
[1 2 2 3 4]
[1 1 2 4 4]
[1 2 2 5 5]
[1 1 1 1 1]
No momento, escrevi um código que faz isso de forma recursiva, apenas verificando iterativamente o vizinho mais próximo, mas ele transborda rapidamente quando a matriz fica grande (ou seja, 100x100).
Existe uma função integrada no R que possa fazer isso? Eu olhei para o raster e processamento de imagem, mas sem sorte. Estou convencido de que deve estar lá fora.