which {base}
Description
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
logicalvector or array.NAs are allowed and omitted (treated as ifFALSE). - arr.ind
- logical; should array indices be returned when
xis an array? - ind
- integer-valued index vector, as resulting from
which(x). - .dim
dim(.)integer vector- .dimnames
- optional list of character
dimnames(.), of which only.dimnames[[1]]is used. - useNames
- logical indicating if the value of
arrayInd()should have (non-null) dimnames at all.
Values
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 arrayInd(which(x), dim(x), dimnames(x)), namely a matrix whose rows each are the indices of one element of x; see Examples below.
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)
Documentation reproduced from R 2.15.0. License: GPL-2.
