Hi ! I have a vector: vec= TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE TRUE TRUE FALSE and I'm looking for a method which let me get only the first values equal TRUE from this vector. It means that I want to get a vector: vec_out = TRUE TRUE TRUE TRUE or posictions values = TRUE: vec_out = 1,2,3,4 -- View this message in context: http://old.nabble.com/Find-the-first-values-in-vector-tp26271555p26271555.html Sent from the R help mailing list archive at Nabble.com.
On Nov 9, 2009, at 1:44 PM, Grzes wrote:> > Hi ! > I have a vector: > vec= TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE TRUE TRUE FALSE > and I'm looking for a method which let me get only the first values > equal > TRUE from this vector. It means that I want to get a vector: > vec_out = TRUE TRUE TRUE TRUE > > or posictions values = TRUE: vec_out = 1,2,3,4?rle > vec[ 1:rle(vec)$lengths[1] ] [1] "TRUE" "TRUE" "TRUE" "TRUE" Although that approach would faid if the first element were "FALSE".> -- > View this message in context: http://old.nabble.com/Find-the-first-values-in-vector-tp26271555p26271555.html > Sent from the R help mailing list archive at Nabble.com. > > ______________________________________________ > R-help at 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.David Winsemius, MD Heritage Laboratories West Hartford, CT
Hi, One way would be, vec[ cumsum(!vec)==0 ] HTH, baptiste 2009/11/9 Grzes <gregorio99 at gmail.com>:> > Hi ! > I have a vector: > vec= TRUE ?TRUE ?TRUE ?TRUE FALSE FALSE FALSE FALSE TRUE ?TRUE ?FALSE > and I'm looking for a method which let me get only the first values equal > TRUE from this vector. It means that I want to get a vector: > vec_out = ?TRUE ?TRUE ?TRUE ?TRUE > > or posictions values = TRUE: vec_out = 1,2,3,4 > -- > View this message in context: http://old.nabble.com/Find-the-first-values-in-vector-tp26271555p26271555.html > Sent from the R help mailing list archive at Nabble.com. > > ______________________________________________ > R-help at 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. >
Use which() vec_out <- which(vec == T) - Justin Montemarano Graduate Student Kent State University - Biological Sciences http://www.montegraphia.com [[alternative HTML version deleted]]
How about vec[1:min(which(vec==FALSE))-1] This will return a character(0) vector if vec[1] is FALSE Nikhil On 9 Nov 2009, at 2:38PM, David Winsemius wrote:>> vec= TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE TRUE TRUE FALSE
Try this: head(vec, sum(cumprod(vec))) The positions: which(head(vec, sum(cumprod(vec)))) On Mon, Nov 9, 2009 at 4:44 PM, Grzes <gregorio99 at gmail.com> wrote:> > Hi ! > I have a vector: > vec= TRUE ?TRUE ?TRUE ?TRUE FALSE FALSE FALSE FALSE TRUE ?TRUE ?FALSE > and I'm looking for a method which let me get only the first values equal > TRUE from this vector. It means that I want to get a vector: > vec_out = ?TRUE ?TRUE ?TRUE ?TRUE > > or posictions values = TRUE: vec_out = 1,2,3,4 > -- > View this message in context: http://old.nabble.com/Find-the-first-values-in-vector-tp26271555p26271555.html > Sent from the R help mailing list archive at Nabble.com. > > ______________________________________________ > R-help at 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. >-- Henrique Dallazuanna Curitiba-Paran?-Brasil 25? 25' 40" S 49? 16' 22" O
yet another solution is: vec <- c(TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, FALSE) seq_len(rle(vec)$lengths[1]) I hope it helps. Best, Dimitris Grzes wrote:> Hi ! > I have a vector: > vec= TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE TRUE TRUE FALSE > and I'm looking for a method which let me get only the first values equal > TRUE from this vector. It means that I want to get a vector: > vec_out = TRUE TRUE TRUE TRUE > > or posictions values = TRUE: vec_out = 1,2,3,4-- Dimitris Rizopoulos Assistant Professor Department of Biostatistics Erasmus University Medical Center Address: PO Box 2040, 3000 CA Rotterdam, the Netherlands Tel: +31/(0)10/7043478 Fax: +31/(0)10/7043014