2017-10-09 1 views
1

Ich versuche, die Funktion is_matching im Paket igraph R anzuwenden. Ich weiß nicht, warum meine Antwort immer FALSCH ist, auch wenn es eindeutig eine Übereinstimmung ist. Hier ist mein Code:R egraph is_matching immer 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 

Ich schätze wirklich jede Hilfe!

+0

Können Sie bitte ein besser reproduzierbares Beispiel zusammen mit notwendigen Bibliotheken zur Verfügung stellen –

+0

Beide Funktionen in diesem Spielzeug Beispiel sind in der Bibliothek (igigraph) in R. – Rocky

Antwort

0

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.

Verwandte Themen