Hi R-experts.

I am working in a R-code where I have two datasets with x and y coordinates on 
each dataset.
I intent to identify the shortest distance between this two datasets. I wrote a 
short code to do that. 
But when I join the datasets to compute the distances, the merge function run 
so slowly. 
I need only to identify the index of rows from each dataset related to the 
shortest distance. 

x0<-rnorm(n=500,mean=1,sd=runif(1))
y0<-rnorm(n=500,mean=3,sd=runif(1))
x1<-rnorm(n=700,mean=8,sd=runif(1))
y1<-rnorm(n=700,mean=5,sd=runif(1))
df.0<-cbind(x0,y0)
df.1<-cbind(x1,y1)
plot(df.0,xlim=range(c(x0,x1)),ylim=range(c(y0,y1)))
points(df.1,col=2)
rm(x0,x1,y0,y1)

#merge two data.frames of points
#### IT SPEND many time
df.merge<-merge(df.0,df.1,all=T)
#compute distances between each pair of points
attach(df.merge)
df.merge$distance<-((x0-x1)^2+(y0-y1)^2)^0.5
detach(df.merge)
#identify the minimum distance
df.merge.distance.min<-min(df.merge$distance)
#select the pair of points (x0,y0,x1,y1) with shortest distance
df.merge.distance.min.subset<-subset(df.merge,df.merge$distance<=df.merge.distance.min)
#trace a arrow between the points with shortest distance
arrows(df.merge.distance.min.subset[1,1],df.merge.distance.min.subset[1,2],df.merge.distance.min.subset[1,3],df.merge.distance.min.subset[1,4],code=0,col=3,lwd=2,lty=1)

Any help are welcome

Miltinho
Brazil.



 para armazenamento!

        [[alternative HTML version deleted]]

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to