Biobase (version 2.28.0)

matchpt: Nearest neighbor search.

Description

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.

Usage

matchpt(x, y)

Arguments

x
A matrix (or vector) of coordinates. Each row represents a point in an ncol(x)-dimensional real vector space.
y
Optional, matrix (or vector) with the same number of columns as x.

Value

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.

Details

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.

Examples

Run this code
    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)

Run the code above in your browser using DataCamp Workspace