我有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)])
我得到了所需的结果,但是当我有更大的矩阵时,不确定是否正确。