I am using match for getting if an element is in a list. For example my list is:
c("a","b","h","e"...) and so on
if I want to see if element h is in the list I am using match in this way:
if ("h" %in% v){do something}
How I can get the position of where it finds the element in the list?
Thanks
If you want to know the position use which
l <- c("a","b","h","e")
which(l=='h')
[1] 3 # It'll give you the position, 'h' is the third element of 'l'
Note that l
is a vector, not a list as you mentioned.
The which
function would tell you where in a vector an item would "match". The %in%
will return a logical vector of the same length as its first argument, and if
will only look at the first logical value so will not work well by itself. You could do this:
if( any("h" %in& v) ) { do something }
The any
function allows you to "collapse" the result of %in%
If you want to know the position, use match
:
l <- c("a","b","h","e")
match("h", l)
It won't make any different here, but generally it will be much faster.