Obtención de componentes conectados en R

Tengo una matriz con valores 0 o 1 y me gustaría obtener una lista de grupos de 1 adyacentes.

Por ejemplo, la matriz

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

debe devolver los siguientes 4 componentes conectados:

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

C2 = {(2,4)}

C3 = {(3,3)}

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

¿Alguien tiene una idea de cómo hacerlo rápido en R? Mi matriz real es bastante grande, como 2000x2000 (pero espero que el número de componentes conectados sea razonablemente pequeño, es decir, 200).

Respuestas a la pregunta(1)

Su respuesta a la pregunta