r 从包含 2 列组合的副本的数据框中删除行

r remove rows from a data frame that contain a duplicate of either combination of 2 columns

我正在尝试从包含 2 列组合的数据框中删除行。例如下面的代码:

vct <- c("A", "B", "C")
a <- b <- vct
combo <- expand.grid(a,b) #generate all posible combinations
combo <- combo[!combo[,1] == combo[,2],] #removes rows with matching column

生成此数据框:

 Var1 Var2
2    B    A
3    C    A
4    A    B
6    C    B
7    A    C
8    B    C

我如何删除两列任意组合的重复行,以便删除 #4 A B 因为 #2 B A 已经存在?生成的数据框如下所示:

 Var1 Var2
2    B    A
3    C    A
4    C    B

我们可以 sort 通过 row 使用 applyMARGIN=1,转置 (t) 输出,使用 duplicated 得到重复行的逻辑索引,求反 (!) 以获得不重复的行,并对数据集进行子集化。

combo[!duplicated(t(apply(combo, 1, sort))),]
#   Var1 Var2
#2    B    A
#3    C    A
#6    C    B