在 spatstat 中组合两个点图案对象创建组合标记

Combining two point pattern objects in spatstat creating a combined mark

假设spatstat 中有两个点模式。我知道我们可以叠加这两个点图案以获得单点图案。现在,如果这些图案有共同的坐标但具有不同的标记,那么在叠加时这些点将被复制。在 spatstat 中有没有办法在为重合的坐标创建公共标记的同时获得一组独特的点?

我不知道 built-in 解决方案可以做到这一点,所以你必须做一些 如下详述的手动工作。

加载包并制作具有重叠点的示例数据:

library(spatstat)
X1 <- cells[1:22]
marks(X1) <- factor("a")
X2 <- cells[20:42]
marks(X2) <- factor("b")
plot(superimpose(X1, X2), main = "")

对于 X1 中的每个点,找到 X2 中最近的点:

nn <- nncross(X1, X2)
tail(nn)
#>         dist which
#> 17 0.1386110     4
#> 18 0.1802776     5
#> 19 0.1069766     5
#> 20 0.0000000     1
#> 21 0.0000000     2
#> 22 0.0000000     3
id1 <- which(nn$dist==0) ## Tests EXACT equality. Consider small tolerance.
id2 <- nn$which[id1]

X1添加额外的标记级别并将其分配给X2中重复的点:

levels(marks(X1)) <- c("a", "c")
marks(X1)[20:22] <- factor("c")
X <- superimpose(X1, X2[-id2])
plot(X, main = "")