2017-10-09 58 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。如果有人能够说明这一点,那会很好。