find closest value in a vector based on another vector values
Bert, I guess I could have been a little more authoritative: the code unique(a[sapply(b,function(x) which.min(abs(x-a)))]) is exactly what I need. Thanks for the input, your comments helped us make the code better, Andras
--- On Tue, 6/18/13, Bert Gunter <gunter.berton at gene.com> wrote:
From: Bert Gunter <gunter.berton at gene.com> Subject: Re: [R] find closest value in a vector based on another vector values To: "Andras Farkas" <motyocska at yahoo.com> Cc: "Jorge I Velez" <jorgeivanvelez at gmail.com>, "R mailing list" <r-help at r-project.org> Date: Tuesday, June 18, 2013, 10:55 AM Andras: No. Using the a = c(1,8,9) and b = 2:3 that ** I posted before**,? you get the single unique value of 1. Please stop guessing, think carefully about what you want to do, and **test** your code. -- Bert On Tue, Jun 18, 2013 at 7:41 AM, Andras Farkas <motyocska at yahoo.com> wrote:
Bert, thanks... The values should not repeat themselves if
the same a is closest to all b, so probably aruns example extended with a unique command works best?
unique(a[sapply(b,function(x) which.min(abs(x-a)))]) thanks, Andras --- On Tue, 6/18/13, Bert Gunter <gunter.berton at gene.com>
wrote:
From: Bert Gunter <gunter.berton at gene.com> Subject: Re: [R] find closest value in a vector
based on another vector values
To: "Jorge I Velez" <jorgeivanvelez at gmail.com> Cc: "Andras Farkas" <motyocska at yahoo.com>,
"R mailing list" <r-help at r-project.org>
Date: Tuesday, June 18, 2013, 10:07 AM Jorge: No.
a <-c(1,5,8,15,32,33.5,69) b <-c(8.5,33) a[findInterval(b, a)]
[1]? 8 32? ##should be 8???33.5 I believe it has to be done explicitly by finding
all the
differences and choosing those n with minimum values, depending
on what
n you want. Note that the problem is incompletely specified.
What if the
same value of a is closest to several values of b? -- do
you want
all the values you choose to be different or not, in which
case they
may not be minimum? a <- c(1, 8, 9) b <- c(2,3) Then what are the 2 closest values of a to b? -- Bert On Tue, Jun 18, 2013 at 5:43 AM, Jorge I Velez
<jorgeivanvelez at gmail.com>
wrote:
Dear Andras, Try
a[findInterval(b, a)]
[1]? 8 32 HTH, Jorge.- On Tue, Jun 18, 2013 at 10:34 PM, Andras
Farkas <motyocska at yahoo.com>
wrote:
Dear All, would you please provide your thoughts on
the
following:
let us say I have: a <-c(1,5,8,15,32,69) b <-c(8.5,33) and I would like to extract from "a" the
two values
that are closest to
the values in "b", where the length of
this vectors
may change but b will
allways be shorter than "a". So at the end
based on
this example I should
have the result "f" as f <-c(8,32) appreciate the help, Andras
______________________________________________ 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. ? ? ? ???[[alternative HTML version deleted]] ______________________________________________ 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. -- Bert Gunter Genentech Nonclinical Biostatistics Internal Contact Info: Phone: 467-7374 Website: http://pharmadevelopment.roche.com/index/pdb/pdb-functional-groups/pdb-biostatistics/pdb-ncb-home.htm -- Bert Gunter Genentech Nonclinical Biostatistics Internal Contact Info: Phone: 467-7374 Website: http://pharmadevelopment.roche.com/index/pdb/pdb-functional-groups/pdb-biostatistics/pdb-ncb-home.htm