Second Nearest Neighbor Calculation Between Point Patterns in R

rspatstat

Is there a way to get the distances for the second nearest neighbor between two point patterns in R? The spatstat package has a function called nncross but it only applies to the nearest neighbors between two patterns and I need the distances to the second nearest neighbors.

Best Answer

The function get.knnx in package FNN can compute the N-nearest neighbours in point patterns.

x1 = cbind(runif(10),runif(10))
x2 = cbind(runif(10),runif(10))
nn = get.knnx(x1,x2,2)

now nn$nn.index is a matrix such that nn$nn.index[i,j] is the row in x1 of the two nearest neighbours to row i in x2 - sorted so that the nearest is [i,1], and the next neighbour is [i,2].

The function also returns the distances for you, and has some options to compute spatial indexes for very fast searches.

Related Question