查找已删除的唯一对的索引

时间:2013-10-17 22:09:20

标签: r indexing unique

我有一个2列的数据框和一个相同长度的矢量。我试图删除数据框中和所有索引处的所有重复对,将其从向量中删除。

我有一个数据框:

> from <- c(1,1,2,4,3)
> to <- c(1,1,2,3,5)
> ft <- data.frame(from,to)
> ft
 from to
1    1  1
2    1  1
3    2  2
4    4  3
5    3  5

矢量:

> dist <- c(1,2,3,4,5)
> dist
[1] 1 2 3 4 5

我使用函数unique()删除所有重复的对:

> unique(ft)
  from to
1    1  1
3    2  2
4    4  3
5    3  5

如何获取“ft”中每一对的去除位置的索引,以便我可以将其从“dist”中删除,在这种情况下为2。

1 个答案:

答案 0 :(得分:2)

正如@eddi所说,您可以获得一个逻辑向量,指示哪些行与duplicated()重复。我将其与which()相结合,后者返回与逻辑TRUE相关联的数字(即重复行)。然后,您可以使用data.frame创建新的vector-等),以便不在对象的下标中包含指定的行。

编辑:在评论中,@ DWin指出了比使用-更好的方法。如果我们使用duplicated()否定!函数,我们将获得一个向量,我们可以使用该向量来确定保留哪些行

> from <- c(1,1,2,4,3)
> to <- c(1,1,2,3,5)
> ft <- data.frame(from,to)
> ft
  from to
1    1  1
2    1  1
3    2  2
4    4  3
5    3  5
> dist <- c(1,2,3,4,5)
> dist
[1] 1 2 3 4 5
> remove <- !duplicated(ft)
> remove
[1]  TRUE FALSE  TRUE  TRUE  TRUE
> ft.new <- ft[which(remove), ]
> ft.new
  from to
1    1  1
3    2  2
4    4  3
5    3  5
> dist.new <- dist[which(remove)]
> dist.new
[1] 1 3 4 5