# nnwhich

0th

Percentile

##### Nearest neighbour

Finds the nearest neighbour of each point in a point pattern.

Keywords
spatial, math
##### Usage
nnwhich(X, ...)
## S3 method for class 'ppp':
nnwhich(X, \dots, k=1, method="C")
## S3 method for class 'default':
nnwhich(X, Y=NULL, \dots, k=1, method="C")
##### Arguments
X,Y
Arguments specifying the locations of a set of points. For nnwhich.ppp, the argument X should be a point pattern (object of class "ppp"). For nnwhich.default, typically X and
...
Ignored by nnwhich.ppp and nnwhich.default.
k
Integer, or integer vector. The algorithm will compute the distance to the kth nearest neighbour.
method
String specifying which method of calculation to use. Values are "C" and "interpreted".
##### Details

For each point in the given point pattern, this function finds its nearest neighbour (the nearest other point of the pattern). By default it returns a vector giving, for each point, the index of the point's nearest neighbour. If k is specified, the algorithm finds each point's kth nearest neighbour.

The function nnwhich is generic, with method for point patterns (objects of class "ppp") and a default method which are described here, as well as a method for three-dimensional point patterns (objects of class "pp3", described in nnwhich.pp3.

The method nnwhich.ppp expects a single point pattern argument X. The default method expects that X and Y will determine the coordinates of a set of points. Typically X and Y would be numeric vectors of equal length. Alternatively Y may be omitted and X may be a list with two components named x and y, or a matrix or data frame with two columns. The argument k may be a single integer, or an integer vector. If it is a vector, then the $k$th nearest neighbour distances are computed for each value of $k$ specified in the vector.

If there are no points (if x has length zero) a numeric vector of length zero is returned. If there is only one point (if x has length 1), then the nearest neighbour is undefined, and a value of NA is returned. In general if the number of points is less than or equal to k, then a vector of NA's is returned.

The argument method is not normally used. It is retained only for checking the validity of the software. If method = "interpreted" then the distances are computed using interpreted R code only. If method="C" (the default) then C code is used. The C code is faster by two to three orders of magnitude and uses much less memory. To evaluate the distance between a point and its nearest neighbour, use nndist.

To find the nearest neighbours from one point pattern to another point pattern, use nncross.

##### Value

• Numeric vector or matrix giving, for each point, the index of its nearest neighbour (or kth nearest neighbour).

If k = 1 (the default), the return value is a numeric vector v giving the indices of the nearest neighbours (the nearest neighbout of the ith point is the jth point where j = v[i]). If k is a single integer, then the return value is a numeric vector giving the indices of the kth nearest neighbours.

If k is a vector, then the return value is a matrix m such that m[i,j] is the index of the k[j]th nearest neighbour for the ith data point.

##### Warnings

A value of NA is returned if there is only one point in the point pattern.

nndist, nncross

##### Aliases
• nnwhich
• nnwhich.ppp
• nnwhich.default
##### Examples
data(cells)
plot(cells)
m <- nnwhich(cells)
m2 <- nnwhich(cells, k=2)

b <- cells[m]
arrows(cells$x, cells$y, b$x, b$y, angle=15, length=0.15, col="red")

# find points which are the neighbour of their neighbour
self <- (m[m] == seq(m))
# plot them
A <- cells[self]
B <- cells[m[self]]
plot(cells)
segments(A$x, A$y, B$x, B$y)
Documentation reproduced from package spatstat, version 1.18-1, License: GPL (>= 2)

### Community examples

Looks like there are no examples yet.