igraph delete_边的行为异常

igraph delete_边的行为异常,r,igraph,R,Igraph,我正在尝试从图形中删除边 我运行了以下代码 library(igraph) A <- c(0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,1,0,0,0,0) dim(A) <- c(5,5) g1 <- graph_from_adjacency_matrix(t(A), mode = c("directed")) g1 <- delete_edges(g1, c(1,2)) g1 <- simplify(g

我正在尝试从图形中删除边

我运行了以下代码

library(igraph)

A <- c(0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,1,0,0,0,0)
dim(A) <- c(5,5)
g1 <- graph_from_adjacency_matrix(t(A), mode = c("directed")) 

g1 <- delete_edges(g1, c(1,2))
g1 <- simplify(g1)

coords <- c(0.0, 0.951056, 0.587785, -0.587785, -0.951056,
            1, 0.309017, -0.809017,-0.809017,  0.309017)
dim(coords) <- c(5,2)

plot(g1, 
     vertex.color=c(rgb(0,.5,.7), 
                    rgb(.15,.6,0), 
                    rgb(.5,.5,.5),
                    rgb(.8,.55,0),
                    rgb(.8,0,0)),
     vertex.size = 20,
     layout = coords,
     main = paste("Graph", toString(1)))
库(igraph)

函数
delete_edges
假定您正在传入边索引。你可以看到的边缘

E(g1)
# + 5/5 edges from faf79f6:
# [1] 1->2 2->3 3->4 4->5 5->1
因此,当您指定
c(1,2)
时,您指定的是第一条边和第二条边,而不是从顶点1到2的边。如果你想这样做,你可以这样做

g1 <- delete_edges(g1, E(g1)[1 %--% 2])

这将删除从1到2以及从3到4的边。

谢谢。如果允许的话,我会接受你的回答。添加边也是这样吗?不是。根据
add_edges
的文档,您将传递一个“顶点数为偶数的顶点序列”。因此,
add_-edges
需要一个顶点序列,而
delete_-edges
需要一个边序列。另外,如果我想删除一个边列表呢。例如,如果我想删除边1->2和边3->4。我以为你会像g1@jd123那样写,我用一个可能的替代方法更新了它。
g1 <- g1 - edge("1|2")
g1 <- delete_edges(g1, E(g1, P=c(1,2,3,4)))