Nearest neighbor search.
Find the nearest neighbors of a set of query points in the same or another set of points in an n-dimensional real vector space, using the Euclidean distance.
matchpt(x, y)
x |
A matrix (or vector) of coordinates.
Each row represents a point in an |
y |
Optional, matrix (or vector) with the same number of columns
as |
If y
is provided, the function searches
for each point in x
its nearest neighbor in y
.
If y
is missing, it searches
for each point in x
its nearest neighbor in x
,
excluding that point itself.
In the case of ties, only the neighbor with the smaller index is given.
The implementation is simple and of complexity nrow(x)
times
nrow(y)
. For larger problems, please consider one of the many
more efficient nearest neighbor search algorithms.
A data.frame
with two columns and nrow(x)
rows.
The first column is the index of the nearest neighbor,
the second column the distance to the nearest neighbor.
If y
was given, the index is a row number in y
,
otherwise, in x
. The row names of the result are those of x
.
Oleg Sklyar osklyar@ebi.ac.uk
a <- matrix(c(2,2,3,5,1,8,-1,4,5,6), ncol=2L, nrow=5L) rownames(a) = LETTERS[seq_len(nrow(a))] matchpt(a) b <- c(1,2,4,5,6) d <- c(5.3, 3.2, 8.9, 1.3, 5.6, -6, 4.45, 3.32) matchpt(b, d) matchpt(d, b)
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.