

   which {base}                                 R Documentation

   WWhhiicchh iinnddiicceess aarree TTRRUUEE ??

   DDeessccrriippttiioonn::

        Give the `TRUE' indices of a logical object, allowing
        for array indices.

   UUssaaggee::

        which(x, arr.ind = FALSE)

   AArrgguummeennttss::

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

    arr.ind: logical; should array indices be returned when `x'
             is an array?

   VVaalluuee::

        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 who's rows each are
        the indices of one element of `x'; see Examples below.

   AAuutthhoorr((ss))::

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

   SSeeee AAllssoo::

        `Logic'

   EExxaammpplleess::

        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)

