删除igraph R中顶点之间的边

use*_*828 3 r edges igraph

我有一个未加权和无向图(A),有10个顶点和10个边.

> A
IGRAPH UNW- 10 10 -- 
+ attr: name (v/c), weight (e/n)
Run Code Online (Sandbox Code Playgroud)

我想从顶点对定义的这个图中删除一堆边,所以例如,我想删除以下边:

V4 -- V5
V3 -- V7
V3 -- V6
Run Code Online (Sandbox Code Playgroud)

这些边缘存储在称为"边缘"的数据帧中.我想一次删除这些边缘.我试过了:

> delete.edges(A,t(edges))
Run Code Online (Sandbox Code Playgroud)

但这不起作用并返回错误:

Error in as.igraph.es(graph, edges) : Invalid edge names
In addition: Warning message:
In as.igraph.es(graph, edges) : NAs introduced by coercion
Run Code Online (Sandbox Code Playgroud)

当添加边的等效命令有效时,为什么这不起作用?

add.edges(A,T(边缘))

如何在一个命令中从图A中删除这些边?谢谢

Gab*_*rdi 5

可能最简单的方法是使用图形作为邻接矩阵:

library(igraph)
g <- graph.ring(10)
V(g)$name <- letters[1:10]
str(g)
# IGRAPH UN-- 10 10 -- Ring graph
# + attr: name (g/c), mutual (g/l), circular (g/l), name (v/c)
# + edges (vertex names):
#  [1] a--b b--c c--d d--e e--f f--g g--h h--i i--j a--j


g[ from=c("a","b","c"), to=c("b","c","d") ] <- 0
str(g)
# IGRAPH UN-- 10 7 -- Ring graph
# + attr: name (g/c), mutual (g/l), circular (g/l), name (v/c)
# + edges (vertex names):
# [1] d--e e--f f--g g--h h--i i--j a--j
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请访问http://igraph.org/r/doc/graph.structure.html.