r - 使用spdep包列出并绘制最近邻居

时间:2014-12-01 00:24:42

标签: r plot nearest-neighbor spdep

这是我第一次使用R中的spdep软件包,所以我希望有人可以帮我处理一些事情。

让我们考虑以下几点。

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)

enter image description here

最终的情节几乎是我想要的,除了一些不应该连接的点是连接的。例如,点11和12不应该连接,因为我们不能直接从点11到12,反之亦然。我可能没有正确创建n2。我如何解决它?如何查看与之前矩阵相似的邻居列表?

0 个答案:

没有答案