# nnfun

##### Nearest Neighbour Index Map as a Function

Compute the nearest neighbour index map of an object, and return it as a function.

##### Usage

`nnfun(X, ...)` # S3 method for ppp
nnfun(X, ..., k=1, value=c("index", "mark"))

# S3 method for psp
nnfun(X, ..., value=c("index", "mark"))

##### Arguments

- X
Any suitable dataset representing a two-dimensional collection of objects, such as a point pattern (object of class

`"ppp"`

) or a line segment pattern (object of class`"psp"`

).- k
A single integer. The

`k`

th nearest neighbour will be found.- …
Extra arguments are ignored.

- value
String (partially matched) specifying whether to return the index of the neighbour (

`value="index"`

, the default) or the mark value of the neighbour (`value="mark"`

).

##### Details

For a collection \(X\) of two dimensional objects
(such as a point pattern or a line segment pattern),
the “nearest neighbour index function”
of \(X\) is the mathematical function \(f\) such that, for any
two-dimensional spatial location \((x,y)\),
the function value `f(x,y)`

is the index \(i\) identifying the closest member of \(X\).
That is, if \(i = f(x,y)\) then \(X[i]\) is the closest member of
the collection \(X\) to the location \((x,y)\).

The command `f <- nnfun(X)`

returns a *function*
in the R language, with arguments `x,y`

, that represents the
nearest neighbour index function of `X`

. Evaluating the function `f`

in the form `v <- f(x,y)`

, where `x`

and `y`

are any numeric vectors of equal length containing coordinates of
spatial locations, yields the indices of the nearest neighbours
to these locations.

If the argument `k`

is specified then the `k`

-th nearest
neighbour will be found.

The result of `f <- nnfun(X)`

also belongs to the class
`"funxy"`

and to the special class `"nnfun"`

.
It can be printed and plotted immediately as shown in the Examples.

A `nnfun`

object can be converted to a pixel image
using `as.im`

.

##### Value

A `function`

with arguments `x,y`

.
The function also belongs to the class `"nnfun"`

which has
a method for `print`

.
It also belongs to the class `"funxy"`

which has methods
for `plot`

, `contour`

and `persp`

.

##### See Also

##### Examples

```
# NOT RUN {
f <- nnfun(cells)
f
plot(f)
f(0.2, 0.3)
g <- nnfun(cells, k=2)
g(0.2, 0.3)
plot(nnfun(amacrine, value="m"))
L <- psp(runif(10), runif(10), runif(10), runif(10), window=owin())
h <- nnfun(L)
h(0.2, 0.3)
# }
```

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