How to test if strings stored in a vector are present in an R list?


To test if strings stored in a vector are present in an R list or not, we can use mapply function. For example, if we have a vector of strings say V and a list called LIST then we can check whether elements in V are present in LIST by using the following command −

mapply(`%in%`,V,LIST)

Example 1

Following snippet creates a vector and list −

x<-LETTERS[1:5]
List<-list(a=sample(LETTERS[1:5],100,replace=TRUE),b=sample(LETTERS[21:26],100,replace=TRUE),c=letters[1:26],d=sample(LETTERS[1:10],100,replace=TRUE),e=sample(letters[1:5],50,replace=TRUE))
List

The following vector and list are created −

$a
[1] "C" "B" "D" "D" "C" "D" "B" "D" "B" "D" "B" "E" "A" "B" "E" "D" "C" "D"
[19] "A" "B" "B" "D" "C" "D" "C" "D" "A" "D" "E" "D" "A" "E" "A" "B" "C" "A"
[37] "A" "B" "A" "B" "A" "A" "A" "C" "B" "E" "D" "E" "D" "C" "C" "C" "D" "C"
[55] "C" "D" "C" "B" "E" "D" "D" "E" "D" "E" "C" "D" "A" "E" "A" "B" "C" "B"
[73] "A" "D" "B" "C" "E" "B" "D" "A" "B" "A" "B" "D" "A" "A" "A" "B" "A" "C"
[91] "C" "D" "C" "A" "A" "A" "C" "A" "E" "A"

$b
[1] "Z" "Z" "U" "Z" "Y" "U" "Y" "U" "X" "Y" "Y" "Z" "X" "Z" "Z" "Z" "Y" "Z"
[19] "X" "Y" "X" "W" "V" "X" "Z" "Z" "Z" "Z" "U" "W" "W" "Y" "W" "Z" "U" "W"
[37] "V" "W" "W" "X" "Y" "V" "V" "W" "W" "Y" "Y" "Z" "X" "Y" "Z" "X" "U" "Z"
[55] "Y" "Y" "Y" "W" "V" "U" "W" "X" "V" "Y" "V" "Y" "U" "X" "V" "X" "Z" "W"
[73] "Y" "X" "U" "V" "U" "Y" "W" "V" "U" "Y" "V" "Y" "Z" "U" "V" "W" "Y" "U"
[91] "U" "Y" "W" "U" "Z" "Y" "X" "Y" "Y" "X"

$c
[1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s"
[20] "t" "u" "v" "w" "x" "y" "z"

$d
[1] "G" "B" "G" "C" "F" "H" "J" "A" "H" "E" "H" "E" "I" "A" "E" "A" "I" "D"
[19] "A" "D" "D" "C" "D" "J" "G" "C" "D" "G" "G" "A" "D" "C" "F" "G" "G" "J"
[37] "F" "E" "D" "E" "E" "G" "F" "F" "I" "C" "C" "F" "C" "E" "D" "C" "D" "F"
[55] "J" "G" "D" "G" "C" "H" "H" "A" "D" "B" "G" "C" "A" "J" "I" "D" "J" "C"
[73] "F" "H" "C" "F" "G" "C" "G" "D" "J" "I" "C" "E" "I" "H" "D" "G" "B" "D"
[91] "H" "I" "B" "E" "J" "I" "C" "G" "F" "J"

$e
[1] "a" "e" "b" "e" "d" "c" "c" "c" "e" "e" "e" "d" "e" "b" "c" "b" "a" "a" "c"
[20] "b" "b" "d" "c" "a" "e" "a" "b" "e" "a" "e" "e" "c" "a" "b" "d" "a" "e" "e"
[39] "b" "b" "e" "e" "d" "a" "e" "b" "e" "c" "d" "e"

Now, to check whether elements of x are in List or not, add the following code to the above snippet −

x<-LETTERS[1:5]
List<-list(a=sample(LETTERS[1:5],100,replace=TRUE),b=sample(LETTERS[21:26],100,replace=TRUE),c=letters[1:26],d=sample(LETTERS[1:10],100,replace=TRUE),e=sample(letters[1:5],50,replace=TRUE))
mapply(`%in%`,x,List)

Output

If you execute all the above given snippets as a single program, it generates the following output −

A B C D E
TRUE FALSE FALSE TRUE FALSE

Example 2

Following snippet creates a vector and list −

y<-letters[1:5]
List<-list(a=sample(letters[1:5],100,replace=TRUE),b=sample(letters[21:26],100,replace=TRUE),c=LETTERS[1:26],d=sample(letters[1:10],100,replace=TRUE),e=sample(LETTERS[1:5],50,replace=TRUE))
List

The following vector and list are created −

$a
[1] "c" "e" "b" "b" "a" "e" "b" "e" "a" "e" "a" "c" "c" "d" "c" "d" "e" "a"
[19] "a" "a" "e" "b" "a" "a" "e" "a" "c" "e" "e" "e" "e" "e" "e" "e" "d" "a"
[37] "e" "a" "c" "d" "c" "e" "a" "e" "a" "a" "a" "d" "d" "e" "e" "a" "d" "e"
[55] "e" "e" "a" "a" "a" "a" "a" "c" "e" "a" "e" "a" "b" "c" "e" "d" "a" "a"
[73] "e" "b" "a" "a" "b" "e" "b" "e" "b" "d" "c" "c" "d" "e" "c" "b" "d" "c"
[91] "a" "a" "b" "e" "d" "a" "d" "e" "e" "b"

$b
[1] "v" "v" "w" "y" "y" "w" "z" "u" "z" "x" "z" "y" "v" "z" "v" "u" "x" "v"
[19] "y" "y" "u" "x" "u" "u" "w" "y" "y" "z" "y" "z" "v" "y" "v" "z" "u" "x"
[37] "w" "z" "x" "x" "w" "z" "w" "y" "z" "v" "v" "z" "v" "x" "v" "z" "v" "z"
[55] "y" "x" "y" "v" "u" "z" "v" "y" "z" "w" "v" "z" "v" "z" "z" "v" "u" "u"
[73] "u" "z" "y" "w" "w" "y" "w" "z" "x" "z" "y" "v" "v" "z" "v" "z" "y" "u"
[91] "x" "y" "x" "u" "x" "w" "y" "z" "u" "w"

$c
[1] "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O" "P" "Q" "R" "S"
[20] "T" "U" "V" "W" "X" "Y" "Z"

$d
[1] "b" "f" "d" "f" "a" "b" "h" "e" "c" "j" "b" "e" "i" "b" "e" "c" "h" "a"
[19] "g" "d" "h" "c" "c" "b" "b" "h" "g" "b" "d" "c" "e" "a" "a" "a" "a" "h"
[37] "f" "a" "i" "a" "a" "j" "f" "i" "i" "e" "g" "a" "j" "e" "i" "g" "c" "g"
[55] "h" "c" "c" "i" "b" "g" "b" "b" "g" "g" "g" "a" "h" "a" "i" "e" "g" "a"
[73] "g" "h" "e" "b" "h" "h" "g" "e" "e" "i" "c" "g" "d" "h" "d" "f" "d" "b"
[91] "h" "g" "e" "b" "g" "c" "a" "i" "c" "c"

$e
[1] "B" "E" "D" "B" "E" "B" "B" "B" "C" "B" "C" "E" "A" "B" "D" "D" "C" "B" "B"
[20] "A" "A" "D" "B" "E" "C" "E" "E" "C" "E" "C" "B" "A" "B" "A" "A" "B" "E" "B"
[39] "A" "E" "E" "A" "D" "B" "A" "A" "B" "E" "C" "D"

Now, to check whether elements of y are in List or not, add the following code to the above snippet −

y<-letters[1:5]
List<-list(a=sample(letters[1:5],100,replace=TRUE),b=sample(letters[21:26],100,replace=TRUE),c=LETTERS[1:26],d=sample(letters[1:10],100,replace=TRUE),e=sample(LETTERS[1:5],50,replace=TRUE))
mapply(`%in%`,y,List)

Output

If you execute all the above given snippets as a single program, it generates the following output −

a b c d e
TRUE FALSE FALSE TRUE FALSE

Updated on: 22-Nov-2021

76 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements