如何从R中的距离矩阵创建邻接矩阵?

时间:2016-09-12 17:22:13

标签: r

我一直试图弄清楚如何从给定函数创建一个空的邻接矩阵:

AdjDist< - function(distMatrix,dist){}

我尝试的一切都行不通。有没有人可以帮忙解决这个问题? (如果有帮助的话,距离矩阵是5x5。)

1 个答案:

答案 0 :(得分:1)

对于您所追求的内容并不清楚,请遵循有关如何提出完整,可重现的问题的建议。一个"空的邻接矩阵"有点不合理,暗示了对R的新手理解。

您可以使用spdep轻松执行邻接分析。希望这接近你所追求的。

首先,加载库和示例数据(来自sp库的meuse)

library(sp)
library(spdep)
data(meuse)
coordinates(meuse) <- ~x+y

现在我们创建一个邻居对象,并查看邻居矩阵的前六个观察值以及相关的四个邻居。行号对应于默认的行号,每列是最近邻居的行索引。

meuse.knn <- knearneigh(coordinates(meuse), k=4)
  head(meuse.knn$nn)

我们可以使用图形结构绘制k = 4的联系

plot(meuse, pch=19)
 plot(knn2nb(meuse.knn), coordinates(meuse), add=TRUE)
   title(main="K nearest neighbours, k=4")

现在,为了便于说明,我们可以将默认的第五个观测值与其相关联(k = 4)最近的观测值进行子集化。

nn1.ids <- as.vector(meuse.knn$nn[5,])             
nn1 <- meuse[nn1.ids,]

然后用最近的4个邻居绘制第五个观察点。

plot(nn1, pch=19, col="red")    
plot(meuse[5,], pch=19, col="black", add=TRUE) 

实际邻接矩阵包含在knearneigh对象(x $ nn)中。