matchpt: Nearest neighbor search. In Bioconductor/Biobase: Biobase: Base functions for Bioconductor

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

 `1` ``` 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`.

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.

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`.

Author(s)

Oleg Sklyar [email protected]

Examples

 ```1 2 3 4 5 6 7``` ``` 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) ```

Bioconductor/Biobase documentation built on July 20, 2018, 12:34 p.m.