# Which function in R

**R – Greetz to Geeks**, and kindly contributed to R-bloggers]. (You can report issue about the content on this page here)

Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

The **which()** function will return the position of the elements(i.e., row number/column number/array index) in a logical vector which are TRUE. Unlike the other base R functions, the which() will accept only the arguments with typeof as logical while the others will give an error.

**Syntax**: which(x, arr.ind = FALSE, useNames = TRUE)

arrayInd(ind, .dim, .dimnames = NULL, useNames = FALSE)

x: can be a logical vector or an array. NAs are treated as FALSE and allowed. But they will be omitted

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

ind: integer-valued index vector, as resulting from which(x)

.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

Examples:

> which(letters == "g") [1] 7 > x <- c(1,5,8,4,6) > x [1] 1 5 8 4 6 > which(x == 5) [1] 2 > which(x != 5) [1] 1 3 4 5 > datasets::npk block N P K yield 1 1 0 1 1 49.5 2 1 1 1 0 62.8 3 1 0 0 0 46.8 4 1 1 0 1 57.0 5 2 1 0 0 59.8 6 2 1 1 1 58.5 7 2 0 0 1 55.5 8 2 0 1 0 56.0 9 3 0 1 0 62.8 10 3 1 1 1 55.8 11 3 1 0 0 69.5 12 3 0 0 1 55.0 13 4 1 0 0 62.0 14 4 1 1 1 48.8 15 4 0 0 1 45.5 16 4 0 1 0 44.2 17 5 1 1 0 52.0 18 5 0 0 0 51.5 19 5 1 0 1 49.8 20 5 0 1 1 48.8 21 6 1 0 1 57.2 22 6 1 1 0 59.0 23 6 0 1 1 53.2 24 6 0 0 0 56.0 > which(npk$yield == 62) [1] 13 > which((npk$yield == 48.8) & (npk$N == 1)) [1] 14 which(npk$yield == max(npk$yield)) [1] 11 > x <- matrix(1:16,4,4) > x [,1] [,2] [,3] [,4] [1,] 1 5 9 13 [2,] 2 6 10 14 [3,] 3 7 11 15 [4,] 4 8 12 16 > which.min(x) [1] 1 > which.max(x) [1] 16 > which(x %% 2 == 0) [1] 2 4 6 8 10 12 14 16 > which(x %% 2 == 0, arr.ind=TRUE) row col [1,] 2 1 [2,] 4 1 [3,] 2 2 [4,] 4 2 [5,] 2 3 [6,] 4 3 [7,] 2 4 [8,] 4 4 > which(x %% 2 == 0, arr.ind=TRUE, useNames = FALSE) [,1] [,2] [1,] 2 1 [2,] 4 1 [3,] 2 2 [4,] 4 2 [5,] 2 3 [6,] 4 3 [7,] 2 4 [8,] 4 4

**leave a comment**for the author, please follow the link and comment on their blog:

**R – Greetz to Geeks**.

R-bloggers.com offers

**daily e-mail updates**about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.

Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.