我有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)。
如@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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句