数据筛选是在分析中最常用的步骤,如微生物组分析中,你的OTU表、实验设计、物种注释之间都要不断筛选,来进行数据对齐,或局部分析。
今天来详解一下此函数的用法。
match
match:匹配两个向量,返回x中存在的返回索引或TRUE、FALSE
match函数使用格式有如下两种:
第一种方便设置参数,返回x中元素在table中的位置
match(x, table, nomatch = NA_integer_, incomparables = NULL)
第二种简洁,返回x中每个元素在table中是否存在
x %in% table
参数详解
- x: 向量, 要匹配的值;
- table: 向量, 被匹配的值;
- nomatch: 没匹配上的返回值, 必须是整数;
- incomparables: 指定不能用来匹配的值.
match函数是一个完全匹配函数, 当两个元素类型不一样时, 如果进行类型转换后匹配得上的话, 则仍可匹配, 可看下例.
匹配上且返回位置
match(c(1, "TRUE"), c(T, 0, "1"))
返回3 1,即1位于表中的3号位,TRUE位于1号位,且T和TRUE可匹配成功
c(1, "TRUE", F) %in% c(T, 0, "1")
返回TRUE TRUE FALSE,表示每个元素在table中是否存在
pmatch
pmatch函数是一个部分匹配函数, 依次从x里面挑出元素, 对照table进行匹配, 若匹配上则剔除匹配上的值, 不再参与下次匹配, duplicate.ok可设置是否剔除; 对于某一个元素, 匹配一共分成三步:
- 如果可以完全匹配, 则认为匹配上了, 返回table中的位置;
- 不满足上述条件, 如果是唯一部分匹配, 则返回table中的位置;
- 不满足上述条件, 则认为没有值与其匹配上.
pmatch函数的格式
pmatch(x, table, nomatch = NA_integer_, duplicates.ok = FALSE)
- x: 向量, 要匹配的值;
- table: 向量, 被匹配的值;
- nomatch: 没匹配上的返回值, 必须是整数;
- duplicates.ok: table里面的元素是否可以适用多次.
默认不允许重复使用table中元素,返回位置1 2 3
pmatch(rep(1, 3), rep(1, 5))
允许重复,返回位置1 1 1
pmatch(rep(1, 3), rep(1, 5), duplicates.ok = TRUE)