which {base} | R Documentation |

## Which indices are TRUE?

### Description

Give the `TRUE`

indices of a logical object, allowing for array
indices.

### Usage

which(x, arr.ind = FALSE)

### Arguments

`x` |
a `logical` vector or array. `NA` s
are allowed and omitted (treated as if `FALSE` ). |

`arr.ind` |
logical; should **arr**ay **ind**ices be returned
when `x` is an array? |

### Value

If `arr.ind == FALSE`

(the default), an integer vector with
`length`

equal to `sum(x)`

, i.e., to the number of
`TRUE`

s in `x`

; Basically, the result is
`(1:length(x))[x]`

.

If `arr.ind == TRUE`

and `x`

is an `array`

(has
a `dim`

attribute), the result is a matrix whose rows each
are the indices of one element of `x`

; see Examples below.

### Author(s)

Werner Stahel and Peter Holzer holzer@stat.math.ethz.ch,
for the array case.

### See Also

`Logic`

, `which.min`

for the index of
the minimum or maximum, and `match`

for the first index of
an element in a vector, i.e., for a scalar `a`

, `match(a,x)`

is equivalent to `min(which(x == a))`

but much more efficient.

### Examples

which(LETTERS == "R")
which(ll <- c(TRUE,FALSE,TRUE,NA,FALSE,FALSE,TRUE))#> 1 3 7
names(ll) <- letters[seq(ll)]
which(ll)
which((1:12)%%2 == 0) # which are even?
which(1:10 > 3, arr.ind=TRUE)
( m <- matrix(1:12,3,4) )
which(m %% 3 == 0)
which(m %% 3 == 0, arr.ind=TRUE)
rownames(m) <- paste("Case",1:3, sep="_")
which(m %% 5 == 0, arr.ind=TRUE)
dim(m) <- c(2,2,3); m
which(m %% 3 == 0, arr.ind=FALSE)
which(m %% 3 == 0, arr.ind=TRUE)
vm <- c(m)
dim(vm) <- length(vm) #-- funny thing with length(dim(...)) == 1
which(vm %% 3 == 0, arr.ind=TRUE)

[Package

*base* version 2.5.0

Index]