[R] Fastest way of finding if any members of vector x fall in the range of the rows of matrix y

Martin Morgan mtmorgan at fhcrc.org
Fri Jun 24 22:05:02 CEST 2011


On 06/24/2011 11:12 AM, Dennis Murphy wrote:
> Hi:
>
> Not much different from Peter's approach, but here's another try:
>
> v<- c(1, 2, 6, 5)
> w<- matrix(c(1, 4, 3, 5, 8, 10), ncol = 2, byrow = TRUE)
>> w
>       [,1] [,2]
> [1,]    1    4
> [2,]    3    5
> [3,]    8   10
>
>
> f<- function(x) v[which(v>= x[1]&  v<= x[2])]
> unlist(apply(w, 1, f))
> [1] 1 2 5
>
> If you just do the apply() part, the function will return a list of
> those elements of v that fall within the i-th interval.

Maybe

 > v = c(1, 2, 6, 5)
 > start = c(-Inf, 1, 3, 8)
 > end = c(-Inf, 4, 5, 10)
 > v[ v <= end[findInterval(v, start)] ]

Also IRanges::findOverlaps / countOverlaps in Bioconductor

   v[countOverlaps(IRanges(v, v), IRanges(start, end)) != 0]

http://bioconductor.org/install

Martin

>
> HTH,
> Dennis
>
> On Fri, Jun 24, 2011 at 9:52 AM, Salih Tuna<salihtuna at gmail.com>  wrote:
>> Hi guys,
>>
>> let's assume i have    the following
>>
>>        1
>> x = 2
>>        6
>>        5
>>
>>        1   4
>> y = 3   5
>>        8  10
>>
>> i want the code to report back 1, 2 and 5 from x.
>> Basically it shopuld check whether each elements of x falls in the range of
>> each row of x. 1 and 2 falls in between 1-4 and 5 falls in between 3-5.
>> I do this with two for loops but in the case of very large list, it takes
>> ages.
>>
>> best,
>> salih
>>
>>
>> On Fri, Jun 24, 2011 at 4:12 PM, Dennis Murphy<djmuser at gmail.com>  wrote:
>>>
>>> Hi:
>>>
>>> That leaves open several possibilities. Could you please supply a
>>> small, reproducible example (i.e., one that someone can copy and paste
>>> into an R session) that illustrates the problem along with the
>>> solution you expect?
>>>
>>> TIA,
>>> Dennis
>>>
>>> On Fri, Jun 24, 2011 at 2:30 AM, Salih Tuna<salihtuna at gmail.com>  wrote:
>>>> Hi Dimitris,
>>>> Thanks for your reply. But this is not exactly what i am after. I want
>>>> to
>>>> find the probes that falls into certain regions. In your solution it
>>>> will
>>>> ignore the second probe if it falls into the same region as the first
>>>> one.
>>>> Is there any vector trickb uilt in R to find whether probes fall into
>>>> certain regions?
>>>> best,
>>>> salih
>>>>
>>>> On Fri, Jun 24, 2011 at 10:23 AM, Dimitris Rizopoulos<
>>>> d.rizopoulos at erasmusmc.nl>  wrote:
>>>>
>>>>> One approach is the following:
>>>>>
>>>>> x<- rnorm(5)
>>>>> y<- matrix(rnorm(5*2), 5, 2)
>>>>>
>>>>> check<- y - x
>>>>> check[, 1] * check[, 2]<  0
>>>>>
>>>>>
>>>>> I hope it helps.
>>>>>
>>>>> Best,
>>>>> Dimitris
>>>>>
>>>>>
>>>>>
>>>>> On 6/24/2011 10:57 AM, Salih Tuna wrote:
>>>>>
>>>>>>   Hi All,
>>>>>> What is the fastest way of finding if any members of vector x fall in
>>>>>> the
>>>>>> range of the rows of matrix y?
>>>>>> I do not want to use two for loops as this will take forever.
>>>>>> Any help will be appreciated,
>>>>>> best,
>>>>>> salih
>>>>>>
>>>>>>         [[alternative HTML version deleted]]
>>>>>>
>>>>>> ______________________________**________________
>>>>>> R-help at r-project.org mailing list
>>>>>>
>>>>>> https://stat.ethz.ch/mailman/**listinfo/r-help<https://stat.ethz.ch/mailman/listinfo/r-help>
>>>>>> PLEASE do read the posting guide http://www.R-project.org/**
>>>>>> posting-guide.html<http://www.r-project.org/posting-guide.html>
>>>>>> and provide commented, minimal, self-contained, reproducible code.
>>>>>>
>>>>>>
>>>>> --
>>>>> Dimitris Rizopoulos
>>>>> Assistant Professor
>>>>> Department of Biostatistics
>>>>> Erasmus University Medical Center
>>>>>
>>>>> Address: PO Box 2040, 3000 CA Rotterdam, the Netherlands
>>>>> Tel: +31/(0)10/7043478
>>>>> Fax: +31/(0)10/7043014
>>>>> Web:
>>>>> http://www.erasmusmc.nl/**biostatistiek/<http://www.erasmusmc.nl/biostatistiek/>
>>>>>
>>>>
>>>>         [[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.
>>>>
>>
>>
>
> ______________________________________________
> 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.


-- 
Computational Biology
Fred Hutchinson Cancer Research Center
1100 Fairview Ave. N. PO Box 19024 Seattle, WA 98109

Location: M1-B861
Telephone: 206 667-2793



More information about the R-help mailing list