Depth First Search on Neighbor Lists
n.comp.nb()
finds the number of disjoint connected subgraphs in the graph depicted by nb.obj
- a spatial neighbours list object.
n.comp.nb(nb.obj)
nb.obj |
a neighbours list object of class |
A list of:
nc |
number of disjoint connected subgraphs |
comp.id |
vector with the indices of the disjoint connected subgraphs that
the nodes in |
Nicholas Lewin-Koh nikko@hailmail.net
columbus <- st_read(system.file("shapes/columbus.shp", package="spData")[1], quiet=TRUE) col.gal.nb <- read.gal(system.file("weights/columbus.gal", package="spData")[1]) coords <- st_coordinates(st_centroid(st_geometry(columbus))) plot(col.gal.nb, coords, col="grey") col2 <- droplinks(col.gal.nb, 21) res <- n.comp.nb(col2) table(res$comp.id) plot(col2, coords, add=TRUE) points(coords, col=res$comp.id, pch=16) run <- FALSE if (require(igraph, quietly=TRUE)) run <- TRUE if (run) { B <- as(nb2listw(col2, style="B", zero.policy=TRUE), "CsparseMatrix") g1 <- graph.adjacency(B, mode="undirected") c1 <- clusters(g1) print(c1$no == res$nc) } if (run) { print(all.equal(c1$membership, res$comp.id)) } if (run) { print(all.equal(c1$csize, c(table(res$comp.id)), check.attributes=FALSE)) } if (run) { W <- as(nb2listw(col2, style="W", zero.policy=TRUE), "CsparseMatrix") g1W <- graph.adjacency(W, mode="directed", weighted="W") c1W <- clusters(g1W) print(all.equal(c1W$membership, res$comp.id, check.attributes=FALSE)) } if (run) { B1 <- get.adjacency(g1) print(all.equal(B, B1)) }
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.