Nearest neighbour distances
Computes the distance from each point to its nearest neighbour in a point pattern. Alternatively computes the distance to the second nearest neighbour, or third nearest, etc.
nndist(X, ..., method="C") ## S3 method for class 'ppp': nndist(X, \dots, k=1, method="C") ## S3 method for class 'default': nndist(X, Y=NULL, \dots, k=1, method="C")
- Arguments specifying the locations of
a set of points.
nndist.ppp, the argument
Xshould be a point pattern (object of class
- Ignored by
- Integer. The algorithm will compute the distance to the
kth nearest neighbour.
- String specifying which method of calculation to use.
This function computes the Euclidean distance from each point
in a point pattern to its nearest neighbour (the nearest other
point of the pattern). If
k is specified, it computes the
distance to the
kth nearest neighbour.
nndist is generic, with
a method for point patterns (objects of class
and a default method for coordinate vectors.
There is also a method for line segment patterns,
The method for point patterns expects a single
point pattern argument
X and returns the vector of its
nearest neighbour distances.
The default method expects that
Y will determine
the coordinates of a set of points. Typically
Y would be numeric vectors of equal length. Alternatively
Y may be omitted and
X may be a list with two components
y, or a matrix or data frame with two columns.
method is not normally used. It is
retained only for checking the validity of the software.
method = "interpreted" then the distances are
computed using interpreted R code only. If
(the default) then C code is used.
The C code is faster by two to three orders of magnitude
and uses much less memory.
If there is only one point (if
x has length 1),
then a nearest neighbour distance of
Inf is returned.
If there are no points (if
x has length zero)
a numeric vector of length zero is returned.
To identify which point is the nearest neighbour of a given point,
To use the nearest neighbour distances for statistical inference,
it is often advisable to use the edge-corrected empirical distribution,
To find the nearest neighbour distances from one point pattern
to another point pattern, use
- Numeric vector of the (
kth) nearest neighbour distances for each point.
An infinite value is returned if there is only one point
in the point pattern (or in general if there are fewer than
data(cells) d <- nndist(cells) d2 <- nndist(cells, k=2) x <- runif(100) y <- runif(100) d <- nndist(x, y) # Stienen diagram plot(cells %mark% (nndist(cells)/2), markscale=1)