findKNN {BiocNeighbors} | R Documentation

## Find k-nearest neighbors

### Description

Find the k-nearest neighbors for each point in a data set, using exact or approximate algorithms.

### Usage

    findKNN(X, k, ..., BNINDEX, BNPARAM)

### Arguments

`X` | A numeric data matrix where rows are points and columns are dimensions. This can be missing if `BNINDEX` is supplied.
`k` | An integer scalar for the number of nearest neighbors.
`...` | Further arguments to pass to individual methods. This is guaranteed to include `subset`, `get.index`, `get.distance`, `last`, `warn.ties`, `raw.index` and `BPPARAM`. See `?"findKNN-methods"` for more details.
`BNINDEX` | A BiocNeighborIndex object containing precomputed index information. This can be missing if `BNPARAM` is supplied, see Details.
`BNPARAM` | A BiocNeighborParam object specifying the algorithm to use. This can be missing if `BNINDEX` is supplied, see Details.

### Details

The class of `BNINDEX` and `BNPARAM` will determine dispatch to specific methods. Only one of these arguments needs to be defined to resolve dispatch. However, if both are defined, they cannot specify different algorithms.

If `BNINDEX` is supplied, `X` does not need to be specified. In fact, any value of `X` will be ignored as all necessary information for the search is already present in `BNINDEX`. Similarly, any parameters in `BNPARAM` will be ignored.

If both `BNINDEX` and `BNPARAM` are missing, the function will default to the KMKNN algorithm by setting `BNPARAM=KmknnParam()`.

### Value

A list is returned containing `index`, an integer matrix of neighbor identities; and `distance`, a numeric matrix of distances to those neighbors. See `?"findKNN-methods"` for more details.

### Author(s)

Aaron Lun

### See Also

`findExhaustive`, `findKmknn`, `findVptree`, `findAnnoy` and `findHnsw` for specific methods.

### Examples

    Y <- matrix(rnorm(100000), ncol=20)
    str(k.out <- findKNN(Y, k=10))
    str(a.out <- findKNN(Y, k=10, BNPARAM=AnnoyParam()))

    e.dex <- buildExhaustive(Y)
    str(k.out2 <- findKNN(Y, k=10, BNINDEX=e.dex))
    str(k.out3 <- findKNN(Y, k=10, BNINDEX=e.dex, BNPARAM=ExhaustiveParam()))

    k.dex <- buildKmknn(Y)
    str(k.out2 <- findKNN(Y, k=10, BNINDEX=k.dex))
    str(k.out3 <- findKNN(Y, k=10, BNINDEX=k.dex, BNPARAM=KmknnParam()))

    a.dex <- buildAnnoy(Y)
    str(a.out2 <- findKNN(Y, k=10, BNINDEX=a.dex))
    str(a.out3 <- findKNN(Y, k=10, BNINDEX=a.dex, BNPARAM=AnnoyParam()))

[Package BiocNeighbors version 1.8.2 Index]