删除两列中具有重复因子水平组合的行

nou*_*use 2 r duplicates dataframe r-factor

经过bind_rows()一些大的 data.frames 之后,我最终得到一个像这样的 data.frame:

tmp <- data.frame(Query=c("A", "B", "C", "D", "A"), target=c("D", "A", "A", "A", "B"), values=runif(5))
tmp
  Query target     values
1     A      D 0.06075322
2     B      A 0.43179750
3     C      A 0.32325309
4     D      A 0.26714620
5     A      B 0.96854999
Run Code Online (Sandbox Code Playgroud)

我需要删除之前在任一方向上出现过的包含Query和组合的所有行target(AxD 是 DxA 的重复项)。在示例中,所需的输出为(因为第 4 行是第 1 行的重复项,第 5 行是第 2 行的重复项)

tmp
      Query target     values
    1     A      D 0.06075322
    2     B      A 0.43179750
    3     C      A 0.32325309
Run Code Online (Sandbox Code Playgroud)

非常感谢!

Maë*_*aël 6

sort选定的列并丢弃duplicated行:

cols = c("Query", "target")
tmp[!duplicated(t(apply(tmp[cols], 1, sort))), ]

#  Query target    values
#1     A      D 0.7205899
#2     B      A 0.5484203
#3     C      A 0.4503456
Run Code Online (Sandbox Code Playgroud)