kNNImpute(x, k, x.dist = NULL, impute.fn, verbose = T)impute.fn = function(values,
distances, k) { ranks = order(distances)
smallest.distances = distances[ranks][1:k] #values
corresponding to smallest distances knn.values =
values[ranks][1:k] knn.weights = 1 - (smallest.distances
/ max(distances)) weighted.mean(knn.values, knn.weights)
} A simple mean can be implemented as follows:
impute.fn = function(values, distances, k)
{ ranks = order(distances) mean(distances[ranks][1:k]) }
x = matrix(rnorm(100),10,10)
x.missing = x > 1
x[x.missing] = NA
kNNImpute(x, 3)
Run the code above in your browser using DataLab