# r - Test if a vector contains a given element

ID : 3572

viewed : 293

Tags : rvectorr-faqr

### Top 5 Answer for r - Test if a vector contains a given element

100

Both the `match()` (returns the first appearance) and `%in%` (returns a Boolean) functions are designed for this.

``v <- c('a','b','c','e')  'b' %in% v ## returns TRUE  match('b',v) ## returns the first location of 'b', in this case: 2 ``

81

`is.element()` makes for more readable code, and is identical to `%in%`

``v <- c('a','b','c','e')  is.element('b', v) 'b' %in% v ## both return TRUE  is.element('f', v) 'f' %in% v ## both return FALSE  subv <- c('a', 'f') subv %in% v ## returns a vector TRUE FALSE is.element(subv, v) ## returns a vector TRUE FALSE ``

73

I will group the options based on output. Assume the following vector for all the examples.

``v <- c('z', 'a','b','a','e') ``

For checking presence:

%in%

``> 'a' %in% v [1] TRUE ``

any()

``> any('a'==v) [1] TRUE ``

is.element()

``> is.element('a', v) [1] TRUE ``

For finding first occurance:

match()

``> match('a', v) [1] 2 ``

For finding all occurances as vector of indices:

which()

``> which('a' == v) [1] 2 4 ``

For finding all occurances as logical vector:

==

``> 'a' == v [1] FALSE  TRUE FALSE  TRUE FALSE ``

Edit: Removing grep() and grepl() from the list for reason mentioned in comments

70

The any() function makes for readable code

``> w <- c(1,2,3) > any(w==1) [1] TRUE  > v <- c('a','b','c') > any(v=='b') [1] TRUE  > any(v=='f') [1] FALSE ``

56

You can use the `%in%` operator:

``vec <- c(1, 2, 3, 4, 5) 1 %in% vec # true 10 %in% vec # false ``