[R] Index out SNP position

Sarah Goslee sarah.goslee at gmail.com
Thu Jan 3 23:04:59 CET 2013


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