# search algorithm

5 messages
Open this post in threaded view
|

## search algorithm

 Hi! I have a problem of finding a specific value in a column. For example, I have a matrix with say 2 columns            X                       Y 1    -2.0341602   9.036689e-05 2    -1.4287230   1.807338e-04 3    -1.1194402   2.711007e-04 4    -1.0327582   3.614676e-04 5    -0.8130556   4.518344e-04 6    -0.7138212   5.422013e-04 7    -0.6634425   6.325682e-04 8    -0.6512083   7.229351e-04 9    -0.6176286   8.133020e-04 10  -0.5897241    9.036689e-04 Now if I have some value of x=-0.6523. I need to find a value in the X column  that is the closest to my value of x then read off the row number and then take the corresponding value in column Y. What I am not sure is how to do the first search where I would search by decimal places and take the smallest absolute distance between the numbers. For example if he finds the first value which is correct in this case - and then 0 and then 6 and then 5 but now there is no 2 for that specific decimal place so he would calculate the distance between the one before and the one after and see which one is smaller. For that which is smaller would be the final X value. Can someone please give me a hint on how to proceed. Thanks. ______________________________________________ [hidden email] mailing list https://stat.ethz.ch/mailman/listinfo/r-helpPLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
Open this post in threaded view
|

## Re: search algorithm

 maybe something like this could be of help: mat <- matrix(rnorm(20), 10, 2) val <- -0.6523 ################### ind <- which.min(abs(mat[, 1] - val)) mat mat[ind, ] Best, Dimitris ---- Dimitris Rizopoulos Ph.D. Student Biostatistical Centre School of Public Health Catholic University of Leuven Address: Kapucijnenvoer 35, Leuven, Belgium Tel: +32/(0)16/336899 Fax: +32/(0)16/337015 Web: http://www.med.kuleuven.be/biostat/     http://www.student.kuleuven.be/~m0390867/dimitris.htm----- Original Message ----- From: <[hidden email]> To: <[hidden email]> Sent: Monday, February 13, 2006 1:30 PM Subject: [R] search algorithm > > > > > Hi! > > I have a problem of finding a specific value in a column. For > example, I > have a matrix with say 2 columns > >           X                       Y > 1    -2.0341602   9.036689e-05 > 2    -1.4287230   1.807338e-04 > 3    -1.1194402   2.711007e-04 > 4    -1.0327582   3.614676e-04 > 5    -0.8130556   4.518344e-04 > 6    -0.7138212   5.422013e-04 > 7    -0.6634425   6.325682e-04 > 8    -0.6512083   7.229351e-04 > 9    -0.6176286   8.133020e-04 > 10  -0.5897241    9.036689e-04 > > Now if I have some value of x=-0.6523. I need to find a value in the > X > column  that is the closest to my value of x then read off the row > number > and then take the corresponding value in column Y. What I am not > sure is > how to do the first search where I would search by decimal places > and take > the smallest absolute distance between the numbers. For example if > he finds > the first value which is correct in this case - and then 0 and then > 6 and > then 5 but now there is no 2 for that specific decimal place so he > would > calculate the distance between the one before and the one after and > see > which one is smaller. For that which is smaller would be the final X > value. > Can someone please give me a hint on how to proceed. Thanks. > > ______________________________________________ > [hidden email] mailing list > https://stat.ethz.ch/mailman/listinfo/r-help> PLEASE do read the posting guide! > http://www.R-project.org/posting-guide.html> Disclaimer: http://www.kuleuven.be/cwis/email_disclaimer.htm______________________________________________ [hidden email] mailing list https://stat.ethz.ch/mailman/listinfo/r-helpPLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
Open this post in threaded view
|

## Re: search algorithm

 In reply to this post by Ita.Cirovic-Donev Hi, I'm not sure how much weight you're putting on efficiency for your algorithm, but that sounds unnecessarily complicated. If your matrices are not too big then maybe something like this would work. Let your matrix be M and your value be a, then yoursearch <- function(M, a) {         # generate abs dist vector         dist <- abs(M[,"X"]-a)         # which element is min dist         argmin <- which.min(dist)         # return corresponding Y value         M[argmin,"Y"] } There are so many ways to do this faster (google for search algorithms if you feel so inclined), but I think simplicity is good unless you have enormous matrices or need to do it a very large number of times. Anyway, hope this helps James On Mon, Feb 13, 2006 at 01:30:21PM +0100, [hidden email] wrote: > I have a problem of finding a specific value in a column. For example, I > have a matrix with say 2 columns > > Now if I have some value of x=-0.6523. I need to find a value in the X > column  that is the closest to my value of x then read off the row number > and then take the corresponding value in column Y. What I am not sure is > how to do the first search where I would search by decimal places and take > the smallest absolute distance between the numbers. For example if he finds > the first value which is correct in this case - and then 0 and then 6 and > then 5 but now there is no 2 for that specific decimal place so he would > calculate the distance between the one before and the one after and see > which one is smaller. For that which is smaller would be the final X value. > Can someone please give me a hint on how to proceed. Thanks. ______________________________________________ [hidden email] mailing list https://stat.ethz.ch/mailman/listinfo/r-helpPLEASE do read the posting guide! http://www.R-project.org/posting-guide.html