[R] fastest way to compute the squared Euclidean distance between two vectors in R

François Pinard pinard at iro.umontreal.ca
Fri Feb 1 13:45:28 CET 2008


Jason Liao <jg_liao at yahoo.com> writes:

> I have a program which needs to compute squared Euclidean distance
> between two vectors million of times, which the Rprof shows is the
> bottleneck. I wondered if there is any faster way than my own simple
> function
>
> distance2 = function(x1, x2)
> {
>    temp = x1-x2
>    sum(temp*temp)
> }

You might try:

  distance2 <- function(x1, x2) crossprod(x1-x2)

And if you do not have to pass the distance2 function itself to some
other function, you might also spare the indirection trhough the
distance2 function and call crossprod directly (replacing the comma by
a minus sign :-).

-- 
François Pinard   http://pinard.progiciels-bpi.ca



More information about the R-help mailing list