我有一个问题,我需要保留唯一的行,但没有重复的对,例如如果我有一个x1 = c(1,2,3)和x2 = c(2,1,3)的表,则只保留第一行和第三行。带有(2,1)的行被抛出,因为(1,2)已经存在。有人可以帮忙吗?
谢谢!
答案 0 :(得分:3)
我们可以使用sort
逐行apply
并使用duplicated
获取逻辑索引以删除重复的行。
df1[!duplicated(t(apply(df1, 1, sort))),]
# x1 x2
#1 1 2
#2 1 3
#3 1 1
#4 2 4
#6 2 2
#7 3 4
#8 3 2
df1 <- structure(list(x1 = c(1L, 1L, 1L, 2L, 2L, 2L, 3L, 3L, 3L, 4L,
4L), x2 = c(2L, 3L, 1L, 4L, 1L, 2L, 4L, 2L, 1L, 2L, 2L)), .Names = c("x1",
"x2"), class = "data.frame", row.names = c(NA, -11L))