18 lines
712 B
R
18 lines
712 B
R
closest.pairs <- function(x, y=NULL, ...){
|
|
# takes two-column object(x,y-values), or creates such an object from x and y values
|
|
if(!is.null(y)) x <- cbind(x, y)
|
|
|
|
distances <- dist(x)
|
|
min.dist <- min(distances)
|
|
point.pair <- combn(1:nrow(x), 2)[, which.min(distances)]
|
|
|
|
cat("The closest pair is:\n\t",
|
|
sprintf("Point 1: %.3f, %.3f \n\tPoint 2: %.3f, %.3f \n\tDistance: %.3f.\n",
|
|
x[point.pair[1],1], x[point.pair[1],2],
|
|
x[point.pair[2],1], x[point.pair[2],2],
|
|
min.dist),
|
|
sep="" )
|
|
c( x1=x[point.pair[1],1],y1=x[point.pair[1],2],
|
|
x2=x[point.pair[2],1],y2=x[point.pair[2],2],
|
|
distance=min.dist)
|
|
}
|