r 函数`match()` 是方向相关的吗?

Is the r function `match()` directionally dependent?

我正在使用二元运算符 %in% 对数据帧进行子集化(我的想法来自另一个 Whosebug 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

当然你有不同的结果:

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