# nndist.ppx: Nearest Neighbour Distances in Any Dimensions In spatstat.geom: Geometrical Functionality of the 'spatstat' Family

## Description

Computes the distance from each point to its nearest neighbour in a multi-dimensional point pattern. Alternatively computes the distance to the second nearest neighbour, or third nearest, etc.

## Usage

 ```1 2``` ``` ## S3 method for class 'ppx' nndist(X, ..., k=1, by=NULL) ```

## Arguments

 `X` Multi-dimensional point pattern (object of class `"ppx"`). `...` Arguments passed to `coords.ppx` to determine which coordinates should be used. `k` Integer, or integer vector. The algorithm will compute the distance to the `k`th nearest neighbour. `by` Optional. A factor, which separates `X` into groups. The algorithm will compute the distance to the nearest point in each group.

## Details

This function computes the Euclidean distance from each point in a multi-dimensional 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; this function `nndist.ppx` is the method for the class `"ppx"`.

The argument `k` may be a single integer, or an integer vector. If it is a vector, then the kth nearest neighbour distances are computed for each value of k specified in the vector.

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.

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.

To identify which point is the nearest neighbour of a given point, use `nnwhich`.

To find the nearest neighbour distances from one point pattern to another point pattern, use `nncross`.

By default, both spatial and temporal coordinates are extracted. To obtain the spatial distance between points in a space-time point pattern, set `temporal=FALSE`.

## Value

Numeric vector or matrix containing the nearest neighbour distances for each point.

If `k = 1` (the default), the return value is a numeric vector `v` such that `v[i]` is the nearest neighbour distance for the `i`th data point.

If `k` is a single integer, then the return value is a numeric vector `v` such that `v[i]` is the `k`th nearest neighbour distance for the `i`th data point.

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

## Warnings

An infinite or `NA` value is returned if the distance is not defined (e.g. if there is only one point in the point pattern).

## Author(s)

`nndist`, `pairdist`, `nnwhich`
 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16``` ``` df <- data.frame(x=runif(5),y=runif(5),z=runif(5),w=runif(5)) X <- ppx(data=df) # nearest neighbours d <- nndist(X) # second nearest neighbours d2 <- nndist(X, k=2) # first, second and third nearest d1to3 <- nndist(X, k=1:3) # nearest neighbour distances to each group marks(X) <- factor(c("a","a", "b", "b", "b")) nndist(X, by=marks(X)) nndist(X, by=marks(X), k=1:2) ```