Ich habe keine Ahnung, warum das funktioniert, und Ihr Code funktioniert nicht, weil sie fast identisch sind, aber:
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
Der Unterschied hier ist, dass der Scheitel Vorfall den passenden Kanten in mm
in umgekehrter gegeben Bestellung, z (1-> 2, 3-> 4) ist (2,1,4,3). Das ist seltsam, denn wenn ich die Kantenrichtungen konstruieren, wie Sie (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
Es als FALSE
herauskommt. Ich habe versucht, den Code der Funktion zu dekonstruieren und konnte keinen Sinn daraus machen, vor allem weil er Befehle aufruft, die in igraph
nicht vorkommen, wie as.igraph.vs
. Wenn irgendjemand das aufklären kann, wäre das großartig.
Können Sie bitte ein besser reproduzierbares Beispiel zusammen mit notwendigen Bibliotheken zur Verfügung stellen –
Beide Funktionen in diesem Spielzeug Beispiel sind in der Bibliothek (igigraph) in R. – Rocky