Получение связанных компонентов в R

У меня есть матрица со значениями 0 или 1, и я хотел бы получить список групп смежных 1.

Например, матрица

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

должен вернуть следующие 4 подключенных компонента:

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

C2 = {(2,4)}

C3 = {(3,3)}

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

У кого-нибудь есть идеи, как сделать это быстро в R? Моя настоящая матрица действительно довольно большая, например 2000x2000 (но я ожидаю, что количество подключенных компонентов будет достаточно маленьким, то есть 200).

Ответы на вопрос(1)

Ваш ответ на вопрос