选择等效行[A-B& B-A]

时间:2013-10-29 01:04:17

标签: r

我的问题似乎非常简单,但我几个小时都无法解决......

我有一个像这样的矩阵:

      [,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)

有人可以给我一个暗示吗?

1 个答案:

答案 0 :(得分:11)

像这样:

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

请注意,输出行已排序,因此例如原始数据中的“{1}}”“不匹配”行将在输出中显示为c(5, 1)。如果您希望输出行与输入中的输出行相同,则可以执行以下操作:

c(1, 5)