我的问题似乎非常简单,但我几个小时都无法解决......
我有一个像这样的矩阵:
[,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 :(得分:11)
像这样:
unique(t(apply(mat, 1, sort)))
请注意,输出行已排序,因此例如原始数据中的“{1}}”“不匹配”行将在输出中显示为c(5, 1)
。如果您希望输出行与输入中的输出行相同,则可以执行以下操作:
c(1, 5)