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 k
th nearest neighbour.
The function nndist
is generic, with
a method for point patterns (objects of class "ppp"
),
and a default method for coordinate vectors.
There are also methods for line segment patterns,
nndist.psp
,
three-dimensional point patterns, nndist.pp3
,
higher-dimensional point patterns, nndist.ppx
and point patterns on a linear network,
nndist.lpp
;
these are described in their own help files.
Type methods(nndist)
to see all available methods.
The method for planar point patterns nndist.ppp
expects a single
point pattern argument X
and returns the vector of its
nearest neighbour distances.
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 the argument by
is given, it should be a factor
,
of length equal to the number of points in X
.
This factor effectively partitions X
into subsets,
each subset associated with one of the levels of X
.
The algorithm will then compute, for each point of X
,
the distance to the nearest neighbour in each subset.
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.
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,
use nnwhich
.
To use the nearest neighbour distances for statistical inference,
it is often advisable to use the edge-corrected empirical distribution,
computed by Gest
.
To find the nearest neighbour distances from one point pattern
to another point pattern, use nncross
.