[R] find closest value in a vector based on another vector values

Andras Farkas motyocska at yahoo.com
Tue Jun 18 19:23:32 CEST 2013


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
>



More information about the R-help mailing list