2017-10-09 86 views
1

我想在igraph R包中應用is_matching函數。我不知道爲什麼我的答案總是錯誤的,即使它明顯是匹配的。這裏是我的代碼:R igraph is_matching always False

library(igraph) 

relations=data.frame(from=c(1,2),to=c(3,4)) 
g <- graph_from_data_frame(relations, directed=FALSE, vertices=1:4) 
mm=c(1,3) 

is_matching(g,mm) 
[1] FALSE 

我真的很感謝任何幫助!

+0

能否請您提供一個更好的重複性示例以及必要的庫 –

+0

這個玩具示例中使用的兩個函數都在R庫(igraph)中。 – Rocky

回答

0

我不知道爲什麼這個作品,你的代碼不會因爲他們幾乎是一樣的,但是:

relations <- data.frame(from=c(1, 3),to=c(2,4)) 
g1 <- graph_from_data_frame(relations, directed=FALSE, vertices=c(1, 2, 3, 4)) 
mm <- c(2,1,4,3) 
is_matching(g1, mm) 
[1] TRUE 

這裏的區別是,頂點事件在mm配合邊緣反向給出訂單,例如(1→2,3→4)是(2,1,4,3)。

relations <- data.frame(from=c(1, 2),to=c(3,4)) 
g1 <- graph_from_data_frame(relations, directed=FALSE, vertices=c(1, 2, 3, 4)) 
mm <- c(3,1,4,2) 
is_matching(g1, mm) 
[1] FALSE 

它出來作爲FALSE:因爲,如果我構造的邊緣方向爲你有(1-> 3,2-> 4)這是奇怪。我試圖解構函數的代碼,並且無法理解它,主要是因爲它調用了似乎不存在於igraph中的命令,如as.igraph.vs。如果有人能夠說明這一點,那會很好。