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

tro*_*000 2 r subset dataframe

我正在尝试从包含 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
Run Code Online (Sandbox Code Playgroud)

生成此数据框:

 Var1 Var2
2    B    A
3    C    A
4    A    B
6    C    B
7    A    C
8    B    C
Run Code Online (Sandbox Code Playgroud)

如何删除行是 2 列的任意组合的重复项,以便删除 ie #4 AB 因为 #2 BA 已经存在?生成的数据框如下所示:

 Var1 Var2
2    B    A
3    C    A
4    C    B
Run Code Online (Sandbox Code Playgroud)

akr*_*run 5

我们可以sort通过row使用applywith MARGIN=1、转置 ( t) 输出, useduplicated获取重复行的逻辑索引, negate ( !) 获取不重复的行,并对数据集进行子集化。

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