如何使用R中的相等矩阵删除重复项?

时间:2019-07-16 15:19:17

标签: r matrix duplicates

我有3个多边形,分别是:第1个是唯一的,第2个和第3个相等。 (我使用SpatialPolygons矩阵,但这并不重要)。我只需要知道如何使用以下矩阵来实现删除这些重复多边形的功能:

d = rgeos::gEquals(sps, byid = T, returnDense = T)

      1     2     3
1 FALSE FALSE FALSE
2 FALSE  TRUE  TRUE
3 FALSE  TRUE  TRUE

因此,我需要保留1并删除2或3。我只有这个简短的数据,但是如果我有更长的数据并且在这里会犯错误,尽管它可能适用于简短的示例,但它将无法继续工作。无论如何,这根本不起作用,因为我不知道如何使它粘住。

我尝试这样的事情:

saved = NULL
      for (i in 1:nrow(d)) {  #i=1
        e = which(d[i,] == T)
        if (any(e == T)) {
          # saved
          saved = c(saved, i)
          d[i,] = F; d[,i] = F
        }
      }

saved中,我只需要索引就离开(1,2)或(1,3),那么我知道下一步该怎么做。

编辑

实际上,这篇帖子How can I remove all duplicates so that NONE are left in a data frame?很有帮助,因为应聘

nd = !duplicated(d)
saved = as.numeric(rownames(d)[which(nd)])

我得到了所需的结果,但是当我有更大的矩阵时,不确定是否正确。

0 个答案:

没有答案