2013-10-29 74 views
4

我的問題似乎很簡單,但我不能夠解決它,因爲小時......選擇相當於行[AB與BA]

我有一個矩陣,使得這一個:

 [,1] [,2] 
[1,] 1 2 
[2,] 2 1 
[3,] 2 1 
[4,] 3 4 

我想要選擇具有相同信息的行,而不考慮列的順序。 例如row1(1; 2)和row2(2; 1)。然後,我想刪除它們,除了一個。

我寫了這個功能,但它不工作...

f<-function(x){ 
    i<-1 
    repeat 
    { 
    a<-c() 
    a<-c(which(x[i,1]==x[,2] & x[i,2]==x[,1])) 
      if(!is.null(a)) {x<-x[-c(a),]} 
      if(i>=nrow(x)) {break} else {i<-i+1} 
    } 
    x 
} 
f(data) 

有人可以給我這個提示嗎?

+0

是否行之內的元素的順序?例如,它必須是「1,2」還是也可以是「2,1」? –

回答

6

像這樣:

unique(t(apply(mat, 1, sort))) 

需要注意的是輸出行進行排序,因此,例如像在原始數據c(5, 1)一個「無與倫比」行會出現在輸出c(1, 5)。相反,如果你想輸出行是因爲它們是在輸入,那麼你可以做:

mat[!duplicated(t(apply(mat, 1, sort))), ] 
相關問題