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. NAs are allowed and omitted (treated as if FALSE).
arr.ind logical; should array indices 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 TRUEs 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 who's 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

Examples

which(LETTERS == "R")
which(ll <- c(T,F,T,NA,F,F,T))#> 1 3 7
names(ll) <- letters[seq(ll)]
which(ll)
which((1:12)%%2 == 0) # which are even?
str(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 Contents]