Multiple matching between two vectors. Different from R-native match
function, where only one match is returned even if there are multiple
matches, mmatch returns all of them.
Usage
mmatch(x, table, nomatch = NA_integer_)
Value
A list of the same length as the input x vector. Each list
item contains the matching indices in ascending order (similar to
match).
Arguments
x
vector or NULL: the values to be matched.
table
vector or NULL: the values to be matched against.
nomatch
the value to be returned in case when no match is found.
Author
Jitao David Zhang <jitao_david.zhang@roche.com>, C-code was adapted
from the program written by Roland Schmucki.
Details
Multiple matches can be useful in many cases, and there is no native R
function for this purpose. User can write their own functions combining
lapplying with match or %in%, our experience however
shows that such non-vectorized function can be extremely slow, especially
when the x or table vector gets longer.
mmatch delegates the multiple-matching task to a C-level function,
which is optimized for speed. Internal benchmarking shows improvement of
hundred fold, namely using mmatching costs about 1/100 of the time
used by R-implementation.