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

Dennis Murphy djmuser at gmail.com
Fri Jun 24 20:12:53 CEST 2011


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.

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.
>> >
>
>



More information about the R-help mailing list