# nndist.ppx

##### Nearest Neighbour Distances in Any Dimensions

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

```
# S3 method for 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 \(k\)th 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).

##### See Also

##### Examples

```
# NOT RUN {
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)
# }
```

*Documentation reproduced from package spatstat, version 1.64-1, License: GPL (>= 2)*