【问题标题】:Is the r function `match()` directionally dependent?r 函数 `match()` 是方向相关的吗?
【发布时间】:2016-02-29 19:43:57
【问题描述】:

我正在使用二元运算符 %in% 对数据帧进行子集化(我从另一个 stackoverflow thread 得到这个想法),但是当我通过切换参数仔细检查结果时,我得到了不同的答案。我已经阅读了关于 match() 函数的 R 文档,似乎 match()%in% 都不应该是方向相关的。我真的需要确切地了解正在发生的事情才能对我的结果充满信心。有人可以提供一些见解吗?

> filtered_ordGeneNames_proteinIDs <- ordGeneNames_ProteinIDs[ordGeneNames_ProteinIDs$V4 %in% ordDEGs$X, ];
> filtered2_ordGeneNames_proteinIDs <- ordDEGs[ordDEGs$X %in% ordGeneNames_ProteinIDs$V4, ];
> nrow(filtered_ordGeneNames_proteinIDs)
[1] 5767
> nrow(filtered2_ordGeneNames_proteinIDs)
[1] 5746

【问题讨论】:

  • 你看help("match")了吗?
  • 也许您正在寻找intersect()
  • 文档中让您认为neither match() nor %in% should be directionally dependent 的提示在哪里?
  • 非常简单。是的,是的。 %in% 的第一个参数是您可用的表,在右侧,您提供要检查它们是否出现在同一个表中的值。

标签: r match subset matching


【解决方案1】:

当然你有不同的结果:

ordGeneNames_ProteinIDs$V4 %in% ordDEGs$X

告诉您ordGeneNames_ProteinIDs$V4 的哪个元素也在ordDEGs$X

在哪里:

ordDEGs %in% $XordGeneNames_ProteinIDs$V4

告诉您ordDEGs$X 的哪个元素也在ordGeneNames_ProteinIDs$V4

比较

c(1,2,3,4) %in% c(1,2,1, 2)
[1]  TRUE  TRUE FALSE FALSE

c(1,2,1, 2) %in% c(1,2,3,4)
[1] TRUE TRUE TRUE TRUE

【讨论】:

  • 非常感谢。隐含的假设让我想到了这一点。基因名称应该是唯一的。 ordGeneNames_ProteinIDs 数据帧中不应该有任何重复,但通过 duplicated() 快速检查告诉我肯定有。
猜你喜欢
  • 1970-01-01
  • 2021-12-24
  • 1970-01-01
  • 2022-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-02
  • 1970-01-01
相关资源
最近更新 更多