11

私の問題は非常に単純なようですが、何時間も解決できません…

私はこのようなマトリックスを持っています:

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

列の順序に関係なく、同じ情報を持つ行を選択したい。たとえば、row1 (1;2) と row2 (2;1) です。次に、1つを除いてそれらを削除します。

この関数を書きましたが、動作しません…</p>

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)

誰かが私にこれについてのヒントを与えることができますか?

4

1 に答える 1

15

このような:

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

c(5, 1)出力行はソートされていることに注意してください。たとえば、元のデータのような「一致しない」行c(1, 5)が出力に表示されます。代わりに、出力行を入力のままにしたい場合は、次のことができます。

mat[!duplicated(t(apply(mat, 1, sort))), ]
于 2013-10-29T02:11:11.657 に答える