R: Convert a square spatial weights matrix to a weights list...

mat2listw {spdep} | R Documentation

## Convert a square spatial weights matrix to a weights list object

### Description

The function converts a square spatial weights matrix, optionally a sparse matrix to a weights list object, optionally adding region IDs from the row names of the matrix, as a sequence of numbers 1:nrow(x), or as given as an argument. The style can be imposed by rebuilting the weights list object internally.

### Usage

    mat2listw(x, row.names = NULL, style="M")

### Arguments

`x` | A square non-negative matrix with no NAs representing spatial weights; may be a matrix of class “sparseMatrix”
`row.names` | row names to use for region IDs
`style` | default "M", unknown style; if not "M", passed to `nb2listw` to re-build the object

### Value

A `listw` object with the following members:

`style` | "M", meaning matrix style, underlying style unknown, or assigned style argument in rebuilt object
`neighbours` | the derived neighbours list
`weights` | the weights for the neighbours derived from the matrix

### Author(s)

Roger Bivand Roger.Bivand@nhh.no

### See Also

`nb2listw`, `nb2mat`

### Examples

    columbus <- st_read(system.file("shapes/columbus.shp", package="spData")[1], quiet=TRUE)
    col005 <- dnearneigh(st_coordinates(st_centroid(st_geometry(columbus),
     of_largest_polygon=TRUE)), 0, 0.5, as.character(columbus$NEIGNO))
    summary(col005)
    col005.w.mat <- nb2mat(col005, zero.policy=TRUE)
    col005.w.b <- mat2listw(col005.w.mat)
    summary(col005.w.b$neighbours)
    diffnb(col005, col005.w.b$neighbours)
    col005.w.mat.3T <- kronecker(diag(3), col005.w.mat)
    col005.w.b.3T <- mat2listw(col005.w.mat.3T, style="W")
    summary(col005.w.b.3T$neighbours)
    run <- FALSE
    if (require("spatialreg", quiet=TRUE)) run <- TRUE
    if (run) {
    W <- as(nb2listw(col005, style="W", zero.policy=TRUE), "CsparseMatrix")
    col005.spM <- mat2listw(W)
    summary(col005.spM$neighbours)
    }
    if (run) {
    diffnb(col005, col005.spM$neighbours)
    }
    if (run && require("Matrix", quiet=TRUE)) {
    IW <- kronecker(Diagonal(3), W)
    col005.spM.3T <- mat2listw(IW, style="W")
    summary(col005.spM.3T$neighbours)
    }

[Package spdep version 1.2-2 Index]