Higher order neighbours lists
The function creates higher order neighbour lists, where higher order neighbours are only lags
links from each other on the graph described by the input neighbours list. It will refuse to lag neighbours lists with the attribute self.included set to TRUE. nblag_cumul
cumulates neighbour lists to a single neighbour list (“nb” object).
nblag(neighbours, maxlag) nblag_cumul(nblags)
neighbours |
input neighbours list of class |
maxlag |
the maximum lag to be constructed |
nblags |
a list of neighbour lists as output by |
returns a list of lagged neighbours lists each with class nb
Roger Bivand Roger.Bivand@nhh.no and Giovanni Millo
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 <- coordinates(as(columbus, "Spatial")) summary(col.gal.nb, coords) col.lags <- nblag(col.gal.nb, 2) print(col.lags) summary(col.lags[[2]], coords) plot(st_geometry(columbus), border="grey") plot(col.gal.nb, coords, add=TRUE) title(main="GAL order 1 (black) and 2 (red) links") plot(col.lags[[2]], coords, add=TRUE, col="red", lty=2) cuml <- nblag_cumul(col.lags) cuml run <- FALSE if (require(igraph, quietly=TRUE)) run <- TRUE if (run) { W <- as(nb2listw(col.gal.nb), "CsparseMatrix") G <- graph.adjacency(W, mode="directed", weight="W") D <- diameter(G) nbs <- nblag(col.gal.nb, maxlag=D) n <- length(col.gal.nb) lmat <- lapply(nbs, nb2mat, style="B", zero.policy=TRUE) mat <- matrix(0, n, n) for (i in seq(along=lmat)) mat = mat + i*lmat[[i]] G2 <- shortest.paths(G) print(all.equal(G2, mat, check.attributes=FALSE)) }
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.