首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >delete_edges的行为很奇怪

delete_edges的行为很奇怪
EN

Stack Overflow用户
提问于 2020-08-20 23:14:26
回答 2查看 99关注 0票数 3

我正试图从图表中删除一条边。

我运行了以下代码

代码语言:javascript
复制
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)))

并产生了以下内容

我希望删除1->2边,但保留2 ->3边.对于正在发生的事情和如何解决它,有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-08-20 23:18:11

delete_edges函数假定您正在传递一个边缘索引。你可以看到

代码语言:javascript
复制
E(g1)
# + 5/5 edges from faf79f6:
# [1] 1->2 2->3 3->4 4->5 5->1

因此,当您指定c(1,2)时,您指定的是第一条和第二条边,而不是从顶点1到顶点2的边。

代码语言:javascript
复制
g1 <- delete_edges(g1, E(g1)[1 %--% 2])

另一种方法是

代码语言:javascript
复制
g1 <- g1 - edge("1|2")

如果您确实有一个要提取边缘的顶点平方,则可以使用E()函数的P=参数。例如

代码语言:javascript
复制
g1 <- delete_edges(g1, E(g1, P=c(1,2,3,4)))

这将消除从1到2,和3到4的边缘。

票数 2
EN

Stack Overflow用户

发布于 2022-07-31 11:08:22

代码语言:javascript
复制
delete_edges(g, get.edge.ids(g, c(1,2)))

将删除顶点1和2的边缘事件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63514342

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档