我有两个非常大的基因列表,A 和 B。A 有两列:GeneID 和 p 值,而 B 只有一列 GeneID。B 中大约有 100,000 个基因,这些是 A 中基因的一个子集(这里大约有 700,000 个基因):
基因列表A GeneID p.value 41931 0.0210 41931 0.0003 5310612 0.3161 5310612 0.7089 5310612 0.0021 98317 0.1139 98317 0.0009 215688 0.0031 215688 0.0008 基因列表B 基因ID 41931 41931 215688 215688 所需基因列表C 5310612 0.3161 5310612 0.7089 5310612 0.0021 98317 0.1139 98317 0.0009
我不希望 B 中的基因再出现在 A 中。如何在将 p 值保留在 A 中的同时摆脱它们?到目前为止,我尝试了三种不同的方法:
我去掉了我的 p 值列,所以两个列表都只有 Entrez Gene ID。然后我使用了以下代码:
new<-A[setdiff(rownames(A),rownames(B)),]
,但我得到了一组与预期完全不同的基因。它是来自 A 和 B 的基因的看似随机的混合,而不是 AB我也试过:
new<-A[!apply(A,1,FUN=function(y){any(apply(B,1,FUN=function(x){all(x==y)}))}),]
- 最后,我尝试通过 EntrezGeneID 进行合并,但这也没有用。
我被这个摧毁了,所以任何帮助将不胜感激。