选择等效的行[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)

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


潇潇雨雨
浏览 473回答 1
1回答

Smart猫小萌

像这样:unique(t(apply(mat, 1, sort)))请注意,输出行已排序,因此例如c(5, 1)原始数据中的“不匹配”行将出现c(1, 5)在输出中。相反,如果您希望输出行与输入中的行相同,则可以执行以下操作:mat[!duplicated(t(apply(mat, 1, sort))), ]
打开App,查看更多内容
随时随地看视频慕课网APP