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 <zhyjiang2...@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 ______________________________________________ R-help@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.