[R] distance between two matrices

Sundar Dorai-Raj sundar.dorai-raj at pdf.com
Wed Jan 28 13:38:38 CET 2004


Thanks to Prof. Ripley, Jens, Roger, and Sean. knn1 is exactly what I'm 
looking for.

Thanks again,
Sundar


Prof Brian Ripley wrote:
> Sounds like knn classification.  See function knn1 in package class.
> 
> 
>>knn(A, B, 1:nrow(A))
> 
> 
> gives the same answers as your loop code, and is just a carefully tuned C 
> equivalent.
> 
> There are faster ways to do this by preprocessing set A discussed e.g. in 
> my PRNN book but your numbers took only 11s on my PC.
> 
> 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.
>>
>>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
>>
>>
> 
>




More information about the R-help mailing list