distance between two matrices
On Tue, 27 Jan 2004, Sundar Dorai-Raj wrote:
Hi all,
Say I have a matrix A with dimension m x 2 and matrix B with
dimension n x 2. I would like to find the row in A that is closest to
the each row in B. Here's an example (using a loop):
set.seed(1)
A <- matrix(runif(12), 6, 2) # 6 x 2
B <- matrix(runif(6), 3, 2) # 3 x 2
m <- vector("numeric", nrow(B))
for(j in 1:nrow(B)) {
d <- (A[, 1] - B[j, 1])^2 + (A[, 2] - B[j, 2])^2
m[j] <- which.min(d)
}
All I need is m[]. I would like to accomplish this without using the
loop if possible, since for my real data n > 140K and m > 1K. I hope
this makes sense.
I think you need a quadtree of the larger set of points, the do lookup for buckets of the smaller one. There is a good deal of information on http://www.cs.umd.edu/~brabec/quadtree/ This isn't an answer within R, the functionality in the gstat contributed package doesn't seem to be at the user level, but it does point to the same site at UMD. Roger
Thanks, Sundar
______________________________________________ R-help at stat.math.ethz.ch mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
Roger Bivand Econonic Geography Section, Department of Economics, Norwegian School of Economics and Business Administration, Breiviksveien 40, N-5045 Bergen, Norway, voice: +47-55959355, fax: +47-55959393; Roger.Bivand at nhh.no