Julio Sergio
2013-Jun-28 21:58 UTC
[R] Transforming boolean subsetting into index subsetting
One of the techniques to subset, a vector for instance, is the following: V <- c(18, 8, 5, 41, 8, 7) V ## [1] 18 8 5 41 8 7 ( I <- abs(V - 9) <= 3 ) ## [1] FALSE TRUE FALSE FALSE TRUE TRUE V[I] ## [1] 8 8 7 However, sometimes we are interested in the indexes of the elements where the condition holds. Is there an easy way to transform the I vector into an indexes vector similar to: I == c(2,5,6) ? I know that I can traverse the I vector with a for() loop collecting the indexes, I just wonder if such an operation can be avoided. Thanks, -Sergio.
peter dalgaard
2013-Jun-28 22:10 UTC
[R] Transforming boolean subsetting into index subsetting
On Jun 28, 2013, at 23:58 , Julio Sergio wrote:> One of the techniques to subset, a vector for instance, is the following: > > V <- c(18, 8, 5, 41, 8, 7) > V > ## [1] 18 8 5 41 8 7 > ( I <- abs(V - 9) <= 3 ) > ## [1] FALSE TRUE FALSE FALSE TRUE TRUE > V[I] > ## [1] 8 8 7 > > However, sometimes we are interested in the indexes of the elements where the > condition holds. Is there an easy way to transform the I vector into an > indexes vector similar to: I == c(2,5,6) ? > > I know that I can traverse the I vector with a for() loop collecting the > indexes, I just wonder if such an operation can be avoided. >which(I) -- Peter Dalgaard, Professor, Center for Statistics, Copenhagen Business School Solbjerg Plads 3, 2000 Frederiksberg, Denmark Phone: (+45)38153501 Email: pd.mes at cbs.dk Priv: PDalgd at gmail.com
Bert Gunter
2013-Jun-29 00:00 UTC
[R] Transforming boolean subsetting into index subsetting
?which -- Bert On Fri, Jun 28, 2013 at 2:58 PM, Julio Sergio <juliosergio at gmail.com> wrote:> One of the techniques to subset, a vector for instance, is the following: > > V <- c(18, 8, 5, 41, 8, 7) > V > ## [1] 18 8 5 41 8 7 > ( I <- abs(V - 9) <= 3 ) > ## [1] FALSE TRUE FALSE FALSE TRUE TRUE > V[I] > ## [1] 8 8 7 > > However, sometimes we are interested in the indexes of the elements where the > condition holds. Is there an easy way to transform the I vector into an > indexes vector similar to: I == c(2,5,6) ? > > I know that I can traverse the I vector with a for() loop collecting the > indexes, I just wonder if such an operation can be avoided. > > Thanks, > > -Sergio. > > ______________________________________________ > 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.-- Bert Gunter Genentech Nonclinical Biostatistics Internal Contact Info: Phone: 467-7374 Website: http://pharmadevelopment.roche.com/index/pdb/pdb-functional-groups/pdb-biostatistics/pdb-ncb-home.htm
Jim Holtman
2013-Jun-29 10:49 UTC
[R] Transforming boolean subsetting into index subsetting
which ( abs(V - 9) <= 3 ) Sent from my iPad On Jun 28, 2013, at 17:58, Julio Sergio <juliosergio at gmail.com> wrote:> One of the techniques to subset, a vector for instance, is the following: > > V <- c(18, 8, 5, 41, 8, 7) > V > ## [1] 18 8 5 41 8 7 > ( I <- abs(V - 9) <= 3 ) > ## [1] FALSE TRUE FALSE FALSE TRUE TRUE > V[I] > ## [1] 8 8 7 > > However, sometimes we are interested in the indexes of the elements where the > condition holds. Is there an easy way to transform the I vector into an > indexes vector similar to: I == c(2,5,6) ? > > I know that I can traverse the I vector with a for() loop collecting the > indexes, I just wonder if such an operation can be avoided. > > Thanks, > > -Sergio. > > ______________________________________________ > 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.