我在 R 中有一个数据框,其中包含拟南芥中旁系同源基因的基因ID,看起来像这样:
gene_x gene_y
AT1 AT2
AT3 AT4
AT1 AT2
AT1 AT3
AT2 AT1
带有与基因名称相对应的“ATx”。
现在,对于下游分析,我只想继续使用唯一的对。有些对只是简单的重复项,可以使用
duplicated()
函数轻松删除。但是,上面的人工数据帧中的第五行也是重复的,但顺序相反,不会被
duplicated()
或unique()
函数拾取。关于如何删除这些行的任何想法?
最佳答案
mydf <- read.table(text="gene_x gene_y
AT1 AT2
AT3 AT4
AT1 AT2
AT1 AT3
AT2 AT1", header=TRUE, stringsAsFactors=FALSE)
这是一种使用
apply
,sort
,paste
和duplicated
的策略:mydf[!duplicated(apply(mydf,1,function(x) paste(sort(x),collapse=''))),]
gene_x gene_y
1 AT1 AT2
2 AT3 AT4
4 AT1 AT3
这是一个略有不同的解决方案:
mydf[!duplicated(lapply(as.data.frame(t(mydf), stringsAsFactors=FALSE), sort)),]
gene_x gene_y
1 AT1 AT2
2 AT3 AT4
4 AT1 AT3
关于r - 用R删除反向重复项,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22756392/