[R] distance between two matrices

David Khabie-Zeitoune dave at evocapital.com
Wed Jan 28 14:28:24 CET 2004


A bit cumbersome, but (somewhat) vectorised.

dist = apply(B, 1, FUN = function(x, M) {rowSums(sweep(M, 2, x, "-")^2)
}, A)
m = row(t(dist))[t(dist==apply(dist,1,min))]

-----Original Message-----
From: Roger Bivand [mailto:Roger.Bivand at nhh.no] 
Sent: 28 January 2004 10:09
To: Sundar Dorai-Raj
Cc: R-help
Subject: Re: [R] 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

______________________________________________
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




More information about the R-help mailing list