Je ne sais pas pourquoi cela fonctionne et votre code ne pas parce qu'ils sont presque identiques, mais:
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
La différence ici est que les sommets incident aux bords correspondants dans mm
sont donnés en sens inverse commande, par exemple (1-> 2, 3-> 4) est (2,1,4,3). Ceci est étrange parce que, si je construire les directions de bord que vous avez (1-> 3, 2-> 4):
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
Il est comme FALSE
. J'ai essayé de déconstruire le code de la fonction et je n'ai pas pu le comprendre, principalement parce qu'il appelle des commandes qui ne semblent pas exister dans igraph
, comme as.igraph.vs
. Si quelqu'un peut faire la lumière sur ce sujet, ce serait formidable.
Pouvez-vous s'il vous plaît fournir un meilleur exemple reproductible avec les bibliothèques nécessaires –
Les deux fonctions utilisées dans cet exemple de jouet sont dans la bibliothèque (igraph) dans R. – Rocky