R语言:数据筛选match

数据筛选是在分析中最常用的步骤,如微生物组分析中,你的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可设置是否剔除; 对于某一个元素, 匹配一共分成三步:

  1. 如果可以完全匹配, 则认为匹配上了, 返回table中的位置;
  2. 不满足上述条件, 如果是唯一部分匹配, 则返回table中的位置;
  3. 不满足上述条件, 则认为没有值与其匹配上.

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)

猜你喜欢

  • 10000+: 菌群分析
    宝宝与猫狗 提DNA发Nature 实验分析谁对结果影响大 Cell微生物专刊 肠道指挥大脑
  • 系列教程:微生物组入门 Biostar 微生物组 宏基因组
  • 专业技能:生信宝典 学术图表 高分文章 不可或缺的人
  • 一文读懂:宏基因组 寄生虫益处 进化树
  • 必备技能:提问 搜索 Endnote
  • 文献阅读 热心肠 SemanticScholar Geenmedical
  • 扩增子分析:图表解读 分析流程 统计绘图
  • 16S功能预测 PICRUSt FAPROTAX Bugbase Tax4Fun
  • 在线工具:16S预测培养基 生信绘图
  • 科研经验:云笔记 云协作 公众号
  • 编程模板: Shell R Perl
  • 生物科普: 肠道细菌 人体上的生命 生命大跃进 细胞暗战 人体奥秘

写在后面

为鼓励读者交流、快速解决科研困难,我们建立了“宏基因组”专业讨论群,目前己有国内外2600+ 一线科研人员加入。参与讨论,获得专业解答,欢迎分享此文至朋友圈,并扫码加主编好友带你入群,务必备注“姓名-单位-研究方向-职称/年级”。技术问题寻求帮助,首先阅读《如何优雅的提问》学习解决问题思路,仍末解决群内讨论,问题不私聊,帮助同行。
image

学习扩增子、宏基因组科研思路和分析实战,关注“宏基因组”
image

image

点击阅读原文,跳转最新文章目录阅读
https://mp.weixin.qq.com/s/5jQspEvH5_4Xmart22gjMA

你可能感兴趣的:(R)