Thank you very much for your quick answers.

Sorry, but i forgot to explain i want to find the closest and smaller element for each entry, so ind1[3] is smaller as 11 and close to 11, ind1[2] is smaller as 5 and close to 5 and ind1[1] is smaller than 3 and close to 3.

best regards

Andreas





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@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


______________________________________________
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