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

Andras Farkas motyocska at yahoo.com
Tue Jun 18 16:41:48 CEST 2013


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
>



More information about the R-help mailing list