普通有向(无向)图(无向图改成F即可)
>g1=graph(c(1,2,1,3),directed=T)
>plot(g1)
画基本图:
> g2=graph.full(4)
> plot(g2)
画环状图:
> g3=graph.ring(4)
> plot(g3)
合并两个图:
> gc=g3%du%g2
> plot(gc)
求两个图的差异:
> dif=graph.difference(gc,graph(c(1,2,1,3),directed=F))
> plot(dif)
> dif
IGRAPH U--- 8 9 --
+ attr: name_1 (g/c), name_2 (g/c), mutual (g/l), circular (g/l),
| loops (g/l)
+ edges:
[1] 1--4 2--3 3--4 5--8 5--7 5--6 6--8 6--7 7--8
>
这里我没有把gc
和g1
作比较,因为出错了,在问题(2)。同时我把两个图的差异信息输出了。
遇到问题:
(1)无效的(负值)节点ID。
> g3=graph(c(0,1,0,2),directed=T)
Error in .Call("R_igraph_create", as.numeric(edges) - 1, as.numeric(n), :
At structure_generators.c:84 : Invalid (negative) vertex id, Invalid vertex id
把(0,1,0,2)中的0改成大于0的值即可。
(2)不能把有向图和无向图相减
>dif=graph.difference(gc,g1,directed=F)
Error in .Call("R_igraph_difference", big, small, PACKAGE = "igraph") :
At operators.c:943 : Cannot subtract directed and undirected graphs, Invalid value
即不能将两者作比较。于是上面我把g1用无向图graph(c(1,2,1,3),directed=F)代替了