[R] Transforming boolean subsetting into index subsetting

peter dalgaard pdalgd at gmail.com
Sat Jun 29 00:10:34 CEST 2013


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



More information about the R-help mailing list