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 ppx
nncross(X, Y,
iX=NULL, iY=NULL,
what = c("dist", "which"),
...,
k = 1)
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:
Nearest neighbour distance
Nearest neighbour index in Y
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.
Point patterns in any number of spatial dimensions
(objects of class "ppx"
).
Optional identifiers,
used to determine whether a point in
X
is identical to a point in Y
. See Details.
Character string specifying what information should be returned.
Either the nearest neighbour distance ("dist"
),
the identifier of the nearest neighbour ("which"
),
or both.
Integer, or integer vector. The algorithm will compute the distance to the
k
th nearest neighbour.
Ignored.
Adrian Baddeley Adrian.Baddeley@curtin.edu.au, Rolf Turner r.turner@auckland.ac.nz and Ege Rubak rubak@math.aau.dk.
Given two point patterns X
and Y
in
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.
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)
Run the code above in your browser using DataLab