Nearest neighbour distances

Computes the distance from each point to its nearest neighbour in a point pattern.

nndist(X, ..., method="C")
  ## S3 method for class 'ppp':
nndist(X, \dots, method="C")
  ## S3 method for class 'default':
nndist(X, Y=NULL, \dots, method="C")
Arguments specifying the locations of a set of points. For nndist.ppp, the argument X should be a point pattern (object of class "ppp"). For nndist.default, typically X and <
Ignored by nndist.ppp and nndist.default.
String specifying which method of calculation to use. Values are "C" and "interpreted".

This function computes the Euclidean distance from each point in a point pattern to its nearest neighbour (the nearest other point of the pattern).

The function nndist is generic, with a method for point patterns (objects of class "ppp") and a default method.

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 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 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.


  • Numeric vector of the nearest neighbour distances for each point.


An infinite value is returned if there is only one point in the point pattern.

See Also

pairdist, Gest, nnwhich.

  • nndist
  • nndist.ppp
  • nndist.default
   d <- nndist(cells)

   x <- runif(100)
   y <- runif(100)
   d <- nndist(x, y)

   # Stienen diagram
   plot(cells %mark% (nndist(cells)/2), markscale=1)
Documentation reproduced from package spatstat, version 1.9-0, License: GPL version 2 or newer

Community examples

Looks like there are no examples yet.