这是我第一次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
正确创建。我如何解决它?以及如何查看类似于我之前在矩阵中的邻居列表?