Am I missing something? ... Why not: range(seq(nrow(B))[B[,2]==1] ) ?? ## note: "==" not "="
Alternatively, and easily generalized (to start with a frame which is a subset of the original and any subset of rows, contiguous or not) range(as.numeric(row.names(B)[B[,2]==1])) Again, am I missing something that makes this "obvious" solution impossible? (Wouldn't be the first time.) Bert Gunter Genentech Nonclinical Statistics -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of jim holtman Sent: Wednesday, November 14, 2007 8:39 AM To: affy snp Cc: r-help@r-project.org Subject: Re: [R] How to get row numbers of a subset of rows Here is a way of doing it using 'rle': > x <- read.table(textConnection(" SNP Chromosome PhysicalPosition + 1 SNP_A-1909444 1 7924293 + 2 SNP_A-2237149 1 8173763 + 3 SNP_A-4303947 1 8191853 + 4 SNP_A-2236359 1 8323433 + 5 SNP_A-2205441 1 8393263 + 6 SNP_A-1909445 1 7924293 + 7 SNP_A-2237146 2 8173763 + 8 SNP_A-4303946 2 8191853 + 9 SNP_A-2236357 2 8323433 + 10 SNP_A-2205442 2 8393263"), header=TRUE) > # use rle to get the 'runs' > y <- rle(x$Chromosome) > # create dataframe with start/ends and values > start <- head(cumsum(c(1, y$lengths)), -1) > index <- data.frame(values=y$values, start=start, end=start + y$lengths - 1) > > index values start end 1 1 1 6 2 2 7 10 > On Nov 14, 2007 10:56 AM, affy snp <[EMAIL PROTECTED]> wrote: > Hello list, > > I read in a txt file using > > <B<-read.table(file="data.snp",header=TRUE,row.names=NULL) > > by specifying the row.names=NULL so that the rows are numbered. > Below is an example after how the table looks like using > <B[1:10,1:3] > > > SNP Chromosome PhysicalPosition > 1 SNP_A-1909444 1 7924293 > 2 SNP_A-2237149 1 8173763 > 3 SNP_A-4303947 1 8191853 > 4 SNP_A-2236359 1 8323433 > 5 SNP_A-2205441 1 8393263 > 6 SNP_A-1909445 1 7924293 > 7 SNP_A-2237146 2 8173763 > 8 SNP_A-4303946 2 8191853 > 9 SNP_A-2236357 2 8323433 > 10 SNP_A-2205442 2 8393263 > > I am wondering if there is a way to return the start and end row numbers > for a subset of rows. > > For example, If I specify B[,2]=1, I would like to get > start=1 and end=6 > > if B[,2]=2, then start=7 and end=10 > > Is there any way in R to quickly do this? > > Thanks a bunch! > > Allen > > ______________________________________________ > 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. > -- Jim Holtman Cincinnati, OH +1 513 646 9390 What is the problem you are trying to solve? ______________________________________________ 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. ______________________________________________ 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.