Nearest Neighbours Between Two Patterns in Any Dimensions
Given two point patterns X
and Y
in
many dimensional space,
finds the nearest neighbour in Y
of each point of X
.
## S3 method for class 'ppx' nncross(X, Y, iX=NULL, iY=NULL, what = c("dist", "which"), ..., k = 1)
X,Y |
Point patterns in any number of spatial dimensions
(objects of class |
iX, iY |
Optional identifiers,
used to determine whether a point in
|
what |
Character string specifying what information should be returned.
Either the nearest neighbour distance ( |
k |
Integer, or integer vector. The algorithm will compute the distance to the
|
... |
Ignored. |
Given two point patterns X
and Y
in
m-dimensional space,
this function finds, for each point of X
,
the nearest point of Y
. The distance between these points
is also computed.
If the argument k
is specified, then the k
-th nearest
neighbours will be found.
The return value is a data frame, with rows corresponding to
the points of X
. The first column gives the nearest neighbour
distances (i.e. the i
th entry is the distance
from the i
th point of X
to the nearest element of
Y
). The second column gives the indices of the nearest
neighbours (i.e.\ the i
th entry is the index of
the nearest element in Y
.)
If what="dist"
then only the vector of distances is returned.
If what="which"
then only the vector of indices is returned.
The argument k
may be an integer or an integer vector.
If it is a single integer, then the k
-th nearest neighbours
are computed. If it is a vector, then the k[i]
-th nearest
neighbours are computed for each entry k[i]
. For example, setting
k=1:3
will compute the nearest, second-nearest and
third-nearest neighbours. The result is a data frame.
Note that this function is not symmetric in X
and Y
.
To find the nearest neighbour in X
of each point in Y
,
use nncross(Y,X)
.
The arguments iX
and iY
are used when
the two point patterns X
and Y
have some points in
common. In this situation nncross(X, Y)
would return some zero
distances. To avoid this, attach a unique integer identifier to
each point, such that two points are identical if their
identifying numbers are equal. Let iX
be the vector of
identifier values for the points in X
, and iY
the vector of identifiers for points in Y
. Then the code
will only compare two points if they have different values of the
identifier. See the Examples.
A data frame, or a vector if the data frame would contain only one column.
By default (if what=c("dist", "which")
and k=1
)
a data frame with two columns:
dist |
Nearest neighbour distance |
which |
Nearest neighbour index in |
If what="dist"
and k=1
, a vector of nearest neighbour distances.
If what="which"
and k=1
, a vector of nearest neighbour
indices.
If k
is specified, the result is a data frame with
columns containing the k
-th nearest neighbour distances
and/or nearest neighbour indices.
Adrian Baddeley Adrian.Baddeley@curtin.edu.au, Rolf Turner r.turner@auckland.ac.nz and Ege Rubak rubak@math.aau.dk.
nndist
for nearest neighbour
distances in a single point pattern.
XYZ <- ppx(matrix(runif(80), 20, 4), boxx(c(0,1), c(0,1), c(0,1), c(0,1))) ## two different point patterns X <- XYZ[1:5] Y <- XYZ[10:20] nncross(X,Y) N23 <- nncross(X,Y, k=2:3) ## two patterns with some points in common X <- XYZ[1:15] Y <- XYZ[10:20] iX <- 1:15 iY <- 10:20 N <- nncross(X,Y, iX, iY, what="which") N4 <- nncross(X,Y, iX, iY, k=4)
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.