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

Bert Gunter gunter.berton at gene.com
Tue Jun 18 16:55:18 CEST 2013


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