which
Which indices are TRUE?
Give the TRUE
indices of a logical object, allowing for array
indices.
Usage
which(x, arr.ind = FALSE, useNames = TRUE)
arrayInd(ind, .dim, .dimnames = NULL, useNames = FALSE)
Arguments
 x
 a
logical
vector or array.NA
s are allowed and omitted (treated as ifFALSE
).  arr.ind
 logical; should array indices be returned
when
x
is an array?  ind
 integervalued index vector, as resulting from
which(x)
.  .dim
dim(.)
integer vector .dimnames
 optional list of character
dimnames(.)
. IfuseNames
is true, to be used for constructing dimnames forarrayInd()
(and hence,which(*, arr.ind=TRUE)
). Ifnames(.dimnames)
is not empty, these are used as column names..dimnames[[1]]
is used as row names.  useNames
 logical indicating if the value of
arrayInd()
should have (nonnull) dimnames at all.
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
arrayInd(which(x), dim(x), dimnames(x))
, namely a matrix
whose rows each are the indices of one element of x
; see
Examples below.
Note
Unlike most other base R functions this does not coerce to x
to logical: only arguments with typeof
logical are
accepted and others give an error.
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
library(base)
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) )
div.3 < m %% 3 == 0
which(div.3)
which(div.3, 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(div.3, arr.ind = FALSE)
which(div.3, arr.ind = TRUE)
vm < c(m)
dim(vm) < length(vm) # funny thing with length(dim(...)) == 1
which(div.3, arr.ind = TRUE)
Community examples
Looks like there are no examples yet.