2017-10-09 5 views
1

is_matching関数をigraph Rパッケージに適用しようとしています。なぜ私の答えが常に偽であるのか分かりません。ここに私のコードです:igraph is_matching常に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)である。あなたは、(1-> 3> 4 2-)持っているとして、私はエッジ方向を構築する場合、これは奇妙です:

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として出てきます。私は関数のコードを解体しようとしましたが、それは意味が分かりませんでした。ほとんどの場合、as.igraph.vsのように、igraphに存在しないようなコマンドを呼び出すためです。もし誰かがこれに光を当てることができれば、それは素晴らしいだろう。