Extends the simple k-nearest neighbors algorithm by incorporating numerous kernel functions and a variety of distance metrics. The package takes advantage of 'RcppArmadillo' to speed up the calculation of distances between observations.

The KernelKnn package extends the simple k-nearest neighbors algorithm by incorporating numerous kernel functions and a variety of distance metrics. The package takes advantage of 'RcppArmadillo' to speed up the calculation of distances between observations. More details on the functionality of KernelKnn can be found in the blog-post and in the package Vignettes.

To install the package from CRAN use,

` install.packages("KernelKnn") `

and to download the latest version from Github use the *install_github* function of the devtools package,

` devtools::install_github('mlampros/KernelKnn') `

Use the following link to report bugs/issues,

I added a test case to check equality of the results between *KernelKnnCV* and *distMat.KernelKnnCV* functions

I added the *DARMA_64BIT_WORD* flag in the Makevars file to allow the package processing big datasets

I modified the *input_dist_mat* function of the *distance_metrics.cpp* file due to a bug.
I modified the *distMat.KernelKnn* function so that it does not return an error if the rows of the *DIST_mat* distance matrix is not equal to the length of *y* (added comments in the function documentation).

In this version the following functions/parameters were added:

*seed_num*: parameter in*KernelKnnCV*and*distMat.KernelKnnCV*cross-validation functions, which specifies the seed of R's random number generator*distMat.KernelKnn*: this function performs kernel k-nearest-neighbor search by using a*distance matrix*as input*distMat.knn.index.dist*: this function returns the indices and distances for k-nearest neighbors using a distance matrix*distMat.KernelKnnCV*: this function performs cross-validated kernel k-nearest-neighbor search using a distance matrix as input

I also modified the *OpenMP* clauses of the .cpp file to address the ASAN errors.

I removed *OpenImageR* and *irlba* as package dependencies. I also added an *init.c* file in the *src* folder due to a change in CRAN submissions for compiled code [ *references* : http://stackoverflow.com/questions/42313373/r-cmd-check-note-found-no-calls-to-r-registerroutines-r-usedynamicsymbols, https://github.com/RcppCore/Rcpp/issues/636 ]

I added a try-catch Rcpp function to make possible the calculation of singular covariance matrices as sugggested in https://github.com/mlampros/KernelKnn/issues/1

Reimplementation of the Rcpp function due to ASAN-memory-errors

I updated the Description file with a URL and a BugReports web-address.

Currently, Software platforms like OSX do not support openMP, thus I've made openMP optional for all cpp functions.