R: Test a neighbours list for symmetry

is.symmetric.nb {spdep} | R Documentation

## Test a neighbours list for symmetry

### Description

Checks a neighbours list for symmetry/transitivity (if i is a neighbour of j, then j is a neighbour of i). This holds for distance and contiguity based neighbours, but not for k-nearest neighbours. The helper function `sym.attr.nb()` calls `is.symmetric.nb()` to set the `sym` attribute if needed, and `make.sym.nb` makes a non-symmetric list symmetric by adding neighbors. `is.symmetric.glist` checks a list of general weights corresponding to neighbours for symmetry for symmetric neighbours.

### Usage

    is.symmetric.nb(nb, verbose = NULL, force = FALSE)
    sym.attr.nb(nb)
    make.sym.nb(nb)
    old.make.sym.nb(nb)
    is.symmetric.glist(nb, glist)

### Arguments

`nb` | an object of class `nb` with a list of integer vectors containing neighbour region number ids.
`verbose` | default NULL, use global option value; if TRUE prints non-matching pairs
`force` | do not respect a neighbours list `sym` attribute and test anyway
`glist` | list of general weights corresponding to neighbours

### Value

TRUE if symmetric, FALSE if not; is.symmetric.glist returns a value with an attribute, "d", indicating for failed symmetry the largest failing value.

### Note

A new version of `make.sym.nb` by Bjarke Christensen is now included. The older version has been renamed `old.make.sym.nb`, and their comparison constitutes a nice demonstration of vectorising speedup using `sapply` and `lapply` rather than loops. When any no-neighbour observations are present, `old.make.sym.nb` is used.

### Author(s)

Roger Bivand Roger.Bivand@nhh.no

### See Also

`read.gal`

### Examples

    example(columbus)
    coords <- coordinates(columbus)
    ind <- sapply(slot(columbus, "polygons"), function(x) slot(x, "ID"))
    print(is.symmetric.nb(col.gal.nb, verbose=TRUE, force=TRUE))
    k4 <- knn2nb(knearneigh(coords, k=4), row.names=ind)
    k4 <- sym.attr.nb(k4)
    print(is.symmetric.nb(k4))
    k4.sym <- make.sym.nb(k4)
    print(is.symmetric.nb(k4.sym))

[Package spdep version 0.6-13 Index]