2014-03-31 44 views
3

我在[R數據幀包含在擬南芥旁系同源基因的基因標識,看起來像這樣:刪除逆轉重複有R

gene_x gene_y 

AT1  AT2 
AT3  AT4 
AT1  AT2 
AT1  AT3 
AT2  AT1 

與「ATX」對應的基因名稱。

現在,對於下游分析,我只想繼續使用唯一對。有些配對只是簡單的重複配對,在使用duplicated()功能後可以輕鬆刪除。 但是,上述仿真數據框中的第五行也是重複的,但是順序相反,並且不會被duplicated()unique()函數拾取。

有關如何刪除這些行的任何想法?

+0

排序第一,然後查找重複。我建議你爲我們提供一個可重現的例子。 http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example –

回答

5
mydf <- read.table(text="gene_x gene_y 
AT1  AT2 
AT3  AT4 
AT1  AT2 
AT1  AT3 
AT2  AT1", header=TRUE, stringsAsFactors=FALSE) 

下面是使用applysortpasteduplicated一個策略:

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 
+0

謝謝,托馬斯,這個解決方案做到了! – KoenVdB