[R] Index out SNP position

Sarah Goslee sarah.goslee at gmail.com
Thu Jan 3 23:22:48 CET 2013


Any element of B that falls into any pair of elements of A?

> unique(unlist(SNP))
[1] 36003918 35838399 35838589

On Thu, Jan 3, 2013 at 5:16 PM, JiangZhengyu <zhyjiang2006 at hotmail.com> wrote:
> Hi Sarah,
>
> Outstanding! Thanks!
>
> I did not notice that numbers of each row of A are different.
>
> Actually, I have over 10,000 in B and over 5000 ranges in A.  What if I only
> need to take out all the B rows that fall into the ranges of A? - remove the
> repetitive results.
>
> Best,
> Jiang
>
>> Date: Thu, 3 Jan 2013 17:04:59 -0500
>> Subject: Re: [R] Index out SNP position
>> From: sarah.goslee at gmail.com
>> To: zhyjiang2006 at hotmail.com
>> CC: r-help at r-project.org
>>
>> Assuming I understand what you want, which I'm not certain of, here's
>> one way; there are more (probably some more elegant).
>>
>> I'm not sure how you'd put them in a vector, since there are different
>> numbers of values for each row of A, so instead I've made a list.
>> unlist(SNP) will turn it into a vector.
>>
>> It's also not consistent which column of A has the higher and lower
>> values.
>>
>> SNP <- lapply(seq_len(nrow(A)), function(x)B[B >= min(A[x,]) & B <=
>> max(A[x,])])
>>
>> > SNP
>> [[1]]
>> [1] 36003918 35838399 35838589
>>
>> [[2]]
>> [1] 35838589
>>
>> [[3]]
>> numeric(0)
>>
>> [[4]]
>> [1] 36003918
>>
>> [[5]]
>> numeric(0)
>>
>> On Thu, Jan 3, 2013 at 4:54 PM, JiangZhengyu <zhyjiang2006 at hotmail.com>
>> wrote:
>> >
>> >
>> >
>> >
>> >
>> >
>> > Dear R experts,
>> >
>> > I have 2 matix: A& B. I am trying to index B against A - (1) find out B
>> > rows that fall between the col 1 and 2 of A& put them into a new vector
>> > SNP.I made code as below, but I cannot think of a right way to do it. Could
>> > anyone help me with the code? Thanks,Jiang----
>> >
>> > A <-
>> > matrix(c(35838396,35838674,36003908,36004090,36150188,36151202,35838584,35838674,36003908,36003992),
>> > ncol = 2)
>> > B <- matrix(c(36003918,35838399,35838589,36262559),ncol = 1) nr=nrow(A)
>> > rn=nrow(B) for (i in 1:nr)
>> > {
>> > for (j in 1:rn){if (B[i,1]<=A[j,1] && B[i,1]>=A[j,2]){SNP[i]=B[i,1]}}
>> > }
>> >

--
Sarah Goslee
http://www.functionaldiversity.org




More information about the R-help mailing list