On Jan 17, 2010, at 12:30 PM, Andreas Wittmann wrote:

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.

Then your code is wrong. You need better logic prior to applying th which.min AND you need also to use the which min result as an index to something.


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



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