3

这是我第一次spdep在 R 中使用这个包,所以我希望有人可以帮助我做一些事情。

让我们考虑以下几点。

set.seed(1)
loc <- data.frame(id=1:15,
                  x=sample(-10:10,15,replace=TRUE),
                  y=sample(-10:10,15,replace=TRUE))
plot(loc[,-1],asp=1)
text(loc$x, loc$y, cex=0.7, pos=3)

本质上,我想通过连接彼此最近的点来构建路径。例如,如果我们想要长度为 3 的路径并且我们从点 1 开始,那么我们应该接下来到点 11,然后最后到点 10。这是我手动获得的其他路径。

      [,1] [,2] [,3]
[1,]     1   11   10
[2,]     2    5   14
[3,]     2   14    3
[4,]     2   14    5
[5,]     3   14    2
[6,]     4    7   15
[7,]     4   15   13
[8,]     5    2   14
[9,]     6    3   14
[10,]    7    4   15
[11,]    8   13   15
[12,]    9   15   13
[13,]   10   11    1
[14,]   11    1    2
[15,]   12   10   11
[16,]   13   15    4
[17,]   14    2    5
[18,]   15   13    4
[19,]   15   13    8

我正在尝试使用spdep包中的函数获取相同的信息。这是我得到的:

library(spdep)
loc_copy <- loc
coordinates(loc_copy) <- c("x","y")
coords <- coordinates(loc_copy)
n2 <- knn2nb(knearneigh(coords, k=2), row.names=loc$id)
plot(c(-10,10), c(-10, 10), type='n', xlab="x", ylab="y", asp=1)
abline(v=0, col="grey"); abline(h=0,col="grey")
plot(n2, coords, add=TRUE)
text(loc$x, loc$y, cex=0.7, pos=3)

在此处输入图像描述

结果图几乎是我想要的,除了一些不应该连接的点被连接起来。例如,点 11 和 12 不应该连接,因为我们不能直接从点 11 到 12,反之亦然。我可能没有n2正确创建。我如何解决它?以及如何查看类似于我之前在矩阵中的邻居列表?

4

0 回答 0