which.Rd 2.47 KB
 Radford Neal committed May 18, 2013 1 2 % File src/library/base/man/which.Rd % Part of the R package, http://www.R-project.org  Radford Neal committed Aug 26, 2016 3 % Copyright 1995-2010 R Core Team  Radford Neal committed May 18, 2013 4 5 6 7 8 9 10 11 12 13 14 % Distributed under GPL 2 or later \name{which} \alias{which} \alias{arrayInd} \title{Which indices are TRUE?} \description{ Give the \code{TRUE} indices of a logical object, allowing for array indices. } \usage{  Radford Neal committed May 18, 2013 15 16 which(x, arr.ind = FALSE, useNames = TRUE) arrayInd(ind, .dim, .dimnames = NULL, useNames = FALSE)  Radford Neal committed May 18, 2013 17 18 19 20 21 22 23 24 25 26 27 28 } \arguments{ \item{x}{a \code{\link{logical}} vector or array. \code{\link{NA}}s are allowed and omitted (treated as if \code{FALSE}).} \item{arr.ind}{logical; should \bold{arr}ay \bold{ind}ices be returned when \code{x} is an array?} \item{ind}{integer-valued index vector, as resulting from \code{which(x)}.} \item{.dim}{\code{\link{dim}(.)} integer vector} \item{.dimnames}{optional list of character \code{\link{dimnames}(.)}, of which only \code{.dimnames[[1]]} is used.}  Radford Neal committed May 18, 2013 29 30  \item{useNames}{logical indicating if the value of \code{arrayInd()} should have (non-null) dimnames at all.}  Radford Neal committed May 18, 2013 31 32 33 34 35 36 37 38 39 40 41 42 43 } \value{ If \code{arr.ind == FALSE} (the default), an integer vector with \code{length} equal to \code{sum(x)}, i.e., to the number of \code{TRUE}s in \code{x}; Basically, the result is \code{(1:length(x))[x]}. If \code{arr.ind == TRUE} and \code{x} is an \code{\link{array}} (has a \code{\link{dim}} attribute), the result is \code{arrayInd(which(x), dim(x), dimnames(x))}, namely a matrix whose rows each are the indices of one element of \code{x}; see Examples below. }  Radford Neal committed May 18, 2013 44 45 \author{Werner Stahel and Peter Holzer (ETH Zurich) proposed the \code{arr.ind} option.}  Radford Neal committed May 18, 2013 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 \seealso{\code{\link{Logic}}, \code{\link{which.min}} for the index of the minimum or maximum, and \code{\link{match}} for the first index of an element in a vector, i.e., for a scalar \code{a}, \code{match(a,x)} is equivalent to \code{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) } \keyword{logic} \keyword{attribute}