2016-09-12 172 views
0

我一直在試圖找出如何創建一個空的鄰接矩陣形式給定的功能:如何從R中的距離矩陣創建一個鄰接矩陣?

AdjDist < - 功能(distMatrix,DIST){}

我已經試過各種不起作用。有沒有人可以提供幫助? (距離矩陣是5x5的,如果沒有什麼幫助。)

+0

歡迎來到StackOverflow。請看看這些關於如何產生[最小,完整和可驗證的例子](http://stackoverflow.com/help/mcve)的技巧,以及這篇文章[在R中創建一個很好的例子]( http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)。也許下面的提示[問一個好問題](http://stackoverflow.com/help/how-to-ask)也值得一讀。 – lmo

+2

你的代碼沒有意義。首先,「空的鄰接矩陣」只是一個空矩陣。其次,''功能''不是一個命令。第三,你從哪裏得到'distMatrix'?所有這些都表明,在開始創建矩陣之前,您需要先使用R進行嬰兒步驟... –

+1

距離矩陣是一個* dense *矩陣,其中每個元素是行索引的對象與索引的對象之間的距離柱。鄰接矩陣是* sparse *,意思是隻有相鄰的對象(即圖中)具有非零的元素。那麼,你所擁有的鄰接關係的標準是距離的函數呢? – aichao

回答

0

這是不以你所追求的完全清楚,並請按照有關如何問一個完整的,可重複的問題的建議。一個「空的鄰接矩陣」是一個非平穩矩陣,暗示了對新手的理解。

您可以使用spdep輕鬆執行鄰接分析。希望這接近你以後的樣子。

首先,加載庫和示例數據(從SP庫默茲)

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

現在我們創建了一個鄰居的對象,並期待在與相關的四個鄰居的鄰接矩陣的前六個觀察。行號對應於meuse的行號,每列是最近鄰居的行索引。

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個最近的鄰居繪製第5個觀察值。

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

實際的鄰接矩陣包含在knearneigh對象(x $ nn)中。