[R] enty-wise closest element

David Winsemius dwinsemius at comcast.net
Sun Jan 17 17:25:04 CET 2010


On Jan 17, 2010, at 11:00 AM, Andreas Wittmann wrote:

> Dear R-users,
>
> i have a simple problem maybe, but i don't see the solution. i want  
> to find the entry-wise closest element of an vector compared with  
> another.
>
> ind1<-c(1,4,10)
> ind2<-c(3,5,11)
>
> for (i in length(ind2):1)
> {
> print(which.min(abs(ind1-ind2[i])))
> }
>
> for ind2[3] it should be ind1[3] 10, for ind2[2] it should be  
> ind1[2] 4 and for ind2[1] it should be ind1[1] 1. but with the for- 
> loop above i get ind1[3], ind1[2] and ind1[2].
>
> any suggestions are quite welcome.

You are failing to use the indices that which.min is providing. (And I  
think the closest in ind1 to ind2[1] is not 1, but rather 4, so see if  
this looks more responsive to your expectations:

 > for (i in length(ind2):1)
+ {
+ print( ind1[which.min(abs(ind1-ind2[i]))] )
+ }
[1] 10
[1] 4
[1] 4
>
> best regards
>
> Andreas
>
> ______________________________________________
> R-help at 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.

David Winsemius, MD
Heritage Laboratories
West Hartford, CT



More information about the R-help mailing list