Verbundene Komponenten in R beziehen

Ich habe eine Matrix mit den Werten 0 oder 1 und möchte eine Liste von Gruppen benachbarter Einsen erhalten.

Zum Beispiel die Matrix

mat = rbind(c(1,0,0,0,0),
            c(1,0,0,1,0),
            c(0,0,1,0,0),
            c(0,0,0,0,0),
            c(1,1,1,1,1))

> mat
     [,1] [,2] [,3] [,4] [,5]
[1,]    1    0    0    0    0
[2,]    1    0    0    1    0
[3,]    0    0    1    0    0
[4,]    0    0    0    0    0
[5,]    1    1    1    1    1

sollte die folgenden 4 verbundenen Komponenten zurückgeben:

C1 = {(1,1); (2,1)}

C2 = {(2,4)}

C3 = {(3,3)}

C4 = {(5,1); (5,2); (5,3); (5,4); (5,5)}

Hat jemand eine Idee, wie man es in R schnell macht? Meine reale Matrix ist in der Tat ziemlich groß, wie 2000x2000 (aber ich gehe davon aus, dass die Anzahl der angeschlossenen Komponenten angemessen klein ist, d. H. 200).

Antworten auf die Frage(2)

Ihre Antwort auf die Frage