问题描述
假设spatstat中有两个点模式。我知道我们可以将这两个点模式叠加起来以获得一个点模式。现在,如果这些图案具有相同的坐标,但带有不同的标记,则这些点在叠加时将重复。在spatstat中,是否有一种方法可以获取一组唯一的点,同时为重合的坐标创建一个共同的标记?
解决方法
我不知道有内置的解决方案,因此您需要做一些 手动操作,如下所述。
加载包并制作带有重叠点的示例数据:
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 = "")