[BioC] Is a number within a set of ranges?
Christos Hatzis
christos at nuverabio.com
Mon Oct 29 18:35:35 CET 2007
> pos <- matrix(c(1, 5, 13, 3, 9, 15), ncol=2) pos
[,1] [,2]
[1,] 1 3
[2,] 5 9
[3,] 13 15
> gene.pos <- c(14,4,10,6)
> gene.pos
[1] 14 4 10 6
> within <- sapply(gene.pos, function(g) any(apply(pos, 1, function(x)
findInterval(g, x)) == 1))
> gene.pos[within]
[1] 14 6
Look at ?findInterval, which does all the work. It returns 1 if within
range in this case.
-Christos
> -----Original Message-----
> From: bioconductor-bounces at stat.math.ethz.ch
> [mailto:bioconductor-bounces at stat.math.ethz.ch] On Behalf Of
> Daniel Brewer
> Sent: Monday, October 29, 2007 12:29 PM
> To: bioconductor at stat.math.ethz.ch
> Subject: [BioC] Is a number within a set of ranges?
>
> I have a table with a start and stop column which defines a
> set of ranges. I have another table with a list of genes
> with associated position. What I would like to do is subset
> the gene table so it only contains genes whose position is
> within any of the ranges. What is the best way to do this?
> The only way I can think of is to construct a long list of
> conditions linked by ORs but I am sure there must be a better way.
>
> Simple example:
>
> Start Stop
> 1 3
> 5 9
> 13 15
>
> Gene Position
> 1 14
> 2 4
> 3 10
> 4 6
>
> I would like to get out:
> Gene Position
> 1 14
> 4 6
>
> Any ideas?
>
> Thanks
>
> Dan
>
> --
> **************************************************************
> Daniel Brewer, Ph.D.
> Institute of Cancer Research
> Email: daniel.brewer at icr.ac.uk
> **************************************************************
>
> The Institute of Cancer Research: Royal Cancer Hospital, a
> charitable Company Limited by Guarantee, Registered in
> England under Company No. 534147 with its Registered Office
> at 123 Old Brompton Road, London SW7 3RP.
>
> This e-mail message is confidential and for use by the...{{dropped:13}}
More information about the Bioconductor
mailing list