mmatch: Multiple matching

Description Usage Arguments Details Value Author(s) See Also Examples

View source: R/mmatch.R

Description

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

1
mmatch(x, table, nomatch = NA_integer_)

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.

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.

Value

A list of the same length as the input x vector. Each list item contains the matching indices (similar to match).

Author(s)

Jitao David Zhang <jitao_david.zhang@roche.com>, C-code was adapted from the program written by Roland Schmucki.

See Also

match

Examples

1
2
3
4
5
6
7
vec1 <- c("HSV", "BVB", "FCB", "HSV", "BRE", "HSV", NA, "BVB")
vec2 <- c("FCB", "FCN", "FCB", "HSV", "BVB", "HSV", "FCK", NA, "BRE", "BRE")

mmatch(vec1, vec2)

## compare to match
match(vec1, vec2)

ribiosUtils documentation built on March 13, 2020, 2:54 a.m.