dnearneigh {spdep} | R Documentation

## Neighbourhood contiguity by distance

### Description

The function identifies neighbours of region points by Euclidean distance between lower (greater than) and upper (less than or equal to) bounds, or with lonlat = TRUE, by Great Circle distance in kilometers.

### Usage

    dnearneigh(x, d1, d2, row.names = NULL, lonlat = FALSE)

### Arguments

`x` | matrix of point coordinates
`d1` | lower distance bound
`d2` | upper distance bound
`row.names` | character vector of region ids to be added to the neighbours list as attribute `region.id`, default `seq(1, nrow(x))`
`lonlat` | TRUE if point coordinates are longitude-latitude decimal degrees, in which case distances are measured in kilometers

### Value

The function returns a list of integer vectors giving the region id numbers for neighbours satisfying the distance criteria.

### Author(s)

Roger Bivand Roger.Bivand@nhh.no

### See Also

`knearneigh`

### Examples

    data(columbus)
    k1 <- knn2nb(knearneigh(coords))
    all.linked <- max(unlist(nbdists(k1, coords)))
    col.nb.0.all <- dnearneigh(coords, 0, all.linked, row.names=rownames(columbus))
    summary(col.nb.0.all, coords)
    library(maptools)
    plot(polys, border="grey", forcefill=FALSE)
    plot(col.nb.0.all, coords, add=TRUE)
    title(main=paste("Distance based neighbours 0-",  format(all.linked),
     " distance units", sep=""))
    data(state)
    us48.fipsno <- read.geoda(system.file("etc/weights/us48.txt",
     package="spdep")[1])
    if (as.numeric(paste(version$major, version$minor, sep="")) < 19) {
     m50.48 <- match(us48.fipsno$"State.name", state.name)
    } else {
     m50.48 <- match(us48.fipsno$"State_name", state.name)
    }
    xy <- as.matrix(as.data.frame(state.center))[m50.48,]
    llk1 <- knn2nb(knearneigh(xy, k=1, lonlat=FALSE))
    all.linked <- max(unlist(nbdists(llk1, xy, lonlat=FALSE)))
    ll.nb <- dnearneigh(xy, 0, all.linked, lonlat=FALSE)
    summary(ll.nb, xy, lonlat=TRUE, scale=0.5)
    gck1 <- knn2nb(knearneigh(xy, k=1, lonlat=TRUE))
    all.linked <- max(unlist(nbdists(gck1, xy, lonlat=TRUE)))
    gc.nb <- dnearneigh(xy, 0, all.linked, lonlat=TRUE)
    summary(gc.nb, xy, lonlat=TRUE, scale=0.5)
    plot(ll.nb, xy)
    plot(diffnb(ll.nb, gc.nb), xy, add=TRUE, col="red", lty=2)
    title(main="Differences between Euclidean and Great Circle neighbours")

[Package spdep version 0.3-25 Index]