Dans le graphe ci-dessous, je souhaite combiner certaines des arêtes par $name. Cependant, il est facile de simplifier un graphe en fusionnant les arêtes en fonction du sommet auquel elles sont connectées, mais pas en les regroupant par une certaine étiquette, dans ce cas $name.
g <- graph(c(1,2, 1,2, 1,2, 2,3, 3,4))
E(g)$weight <- 1:5
E(g)$name <- c("A", "A", "B", "C", "D")
Lors de l'exécution du simplify
ou même as.directed\as.undirected
les noms sont supprimés s'ils ne sont pas spécifiés dans le champ edge.attr.comb
qui est tout à fait logique. Mais pour ce qui est de la spécification, je ne peux que choisir max ou min, ou le convertir en chaîne de caractères.
simplify(g, edge.attr.comb=list(weight = "sum")
Ce que je voudrais obtenir, c'est un graphique où les arêtes marquées par A sont fusionnées/sommées, mais où celles marquées par B sont conservées comme une arête parallèle. J'ai essayé plusieurs choses sans succès.
EDIT : Je sais que je peux convertir le graphique en cadre de données, grouper les données dans ce cadre et revenir au graphique. Ou simplement préparer le cadre de données avant de le mettre dans le graphique. Cependant, c'est trop de manipulations et il serait plus facile de le faire directement dans igraph.