Last chance! 50% off unlimited learning
Sale ends in
X
and Y
,
finds the nearest neighbour in Y
of each point of X
.nncross(X, Y, iX=NULL, iY=NULL)
"ppp"
).X
is identical to a point in Y
. See DetailsY
X
and Y
this
function finds, for each point of X
,
the nearest point of Y
. The distance between these points
is also computed. 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 point of
Y
). The second column gives the indices of the nearest
neighbours (i.e. the i
th entry is the index of
the nearest point in Y
.)
Note that this function is not symmetric in X
and Y
.
To find the nearest neighbour in X
of each point in Y
,
just 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.
# two different point patterns
X <- runifpoint(15)
Y <- runifpoint(20)
N <- nncross(X,Y)$which
# note that length(N) = 15
plot(superimpose(X=X,Y=Y), main="nncross", cols=c("red","blue"))
arrows(X$x, X$y, Y[N]$x, Y[N]$y, length=0.15)
# two patterns with some points in common
Z <- runifpoint(50)
X <- Z[1:30]
Y <- Z[20:50]
iX <- 1:30
iY <- 20:50
N <- nncross(X,Y, iX, iY)$which
plot(superimpose(X=X, Y=Y), main="nncross", cols=c("red","blue"))
arrows(X$x, X$y, Y[N]$x, Y[N]$y, length=0.15)
Run the code above in your browser using DataLab