[R] vectorize an expression

Gabor Grothendieck ggrothendieck at myway.com
Tue May 25 13:42:17 CEST 2004



apply(a,1,function(y)apply(a,1,function(x)dist(x,y)))


Robin Hankin <rksh <at> soc.soton.ac.uk> writes:

: 
: Hi guys.  Another thing I cannot vectorize:
: 
: I have an array "a", of size 5-by-2, for example, of 5 2D vectors.  I
: also have a distance function that computes the distance between two
: vectors (usual Euclidean distance is a good example but I have other metrics 
I
: want to use as well).  I want a 5-by-5 array with the [i,j]th element being
:   the distance from a[i,] to a[j,]
: 
: To Wit:
: 
:    a <- matrix(1:10,5,2)
:    array <- matrix(NA, 5, 5)
:    dist <- function(x1,x2){sqrt(sum(x1-x2)^2)}
: 
:    #NONVECTORIZED BIT FOLLOWS
:    for(i in 1:5) {
:      for(j in 1:5) {
:        array[i,j] <- dist(a[i,] , a[j,])
:      }
:    }
: 
: (note that array[i,i]=0 for i=1:5 as expected).
: 
: How to vectorize this?
:




More information about the R-help mailing list