1
我有一個圖,需要所有節點之間的最短距離。 現在,我提出了以下功能,R,確定最短路徑
shortestPath <- function(streets, length)
{
streets <- matrix(streets, byrow=TRUE, ncol=2) # from -> to
g <- graph.data.frame(as.data.frame(streets)) # create graph, see plot(g)
return <- shortest.paths(g, weights = length) # return routes lengths
}
這裏streets
是包含在那裏我們有一個邊緣和length
是(顯然)數據的邊緣的長度的矢量。
我有下面的圖,其中每個邊的長度爲2,請注意圖必須是無向的。
您可以使用下面的數據來重現問題。
# Data
edges <- c(1,2, 2,3, 3,4, 4,5, 2,6, 3,7, 4,8, 6,8);
length <- rep(2,8);
aantalNodes <- 8;
# Determine shortest path
routes <- matrix(shortestPath(edges,length), byrow=FALSE, ncol=aantalNodes);
我們清楚地看到,節點6和節點8之間的最短路徑長度爲2,但是,該函數返回長度4.什麼地方出了錯?我已經修補了兩天。期待您的幫助!
我認爲問題是你的函數有一個名爲'streets'的參數,而根據函數的主體,該參數應該被命名爲'邊緣'。將來,請讓您的例子具有可重複性,以便我們可以真正回答問題,而不是臆測。 – flodel
我發現我確實在我的問題上犯了一個錯字。我會提供一小時內可重現的數據。 – Michiel
所以你還有問題?如果是這樣,請提供「街道」和「長度」輸入,以使您的示例具有可再現性。另外,請注意'length'也是一個函數的名字,因此對於一個變量來說是一個非常糟糕的名字選擇。 – flodel