| find_knn {knn.covertree} | R Documentation | 
kNN search
Description
k nearest neighbor search with custom distance function.
Usage
find_knn(data, k, ..., query = NULL, distance = c("euclidean",
  "cosine", "rankcor"), sym = TRUE)
Arguments
| data | Data matrix | 
| k | Number of nearest neighbors | 
| ... | Unused. All parameters to the right of the  | 
| query | Query matrix. In  | 
| distance | Distance metric to use. Allowed measures: Euclidean distance (default), cosine distance ( | 
| sym | Return a symmetric matrix (as long as query is NULL)? | 
Value
A list with the entries:
- index
- A - nrow(data) \times kinteger matrix containing the indices of the k nearest neighbors for each cell.
- dist
- A - nrow(data) \times kdouble matrix containing the distances to the k nearest neighbors for each cell.
- dist_mat
- 
A dgCMatrixifsym == TRUE, else adsCMatrix(nrow(query) \times nrow(data)). Any zero in the matrix (except for the diagonal) indicates that the cells in the corresponding pair are close neighbors.
Examples
# The default: symmetricised pairwise distances between all rows
pairwise <- find_knn(mtcars, 5L)
image(as.matrix(pairwise$dist_mat))
# Nearest neighbors of a subset within all
mercedeses <- grepl('Merc', rownames(mtcars))
merc_vs_all <- find_knn(mtcars, 5L, query = mtcars[mercedeses, ])
# Replace row index matrix with row name matrix
matrix(
  rownames(mtcars)[merc_vs_all$index],
  nrow(merc_vs_all$index),
  dimnames = list(rownames(merc_vs_all$index), NULL)
)[, -1]  # 1st nearest neighbor is always the same row