使用Igraph中的顶点标签删除边

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Igraph中的顶点标签删除边相关的知识,希望对你有一定的参考价值。

我是R的新手。我有一个igraph图形对象,我随机标记了顶点TRUE或FALSE。有没有办法删除两个TRUE标记顶点或两个FALSE标记顶点之间的边?

这是我的代码:

g <- read_graph("grph.graphml", format = c("graphml"))
num_of_edges <- gorder(g)
random_list <- sample(c(TRUE,FALSE), num_of_vertices, TRUE) 
V(g)$label <- random_list
答案

您的代码引用了我们没有的文件“grph.graphml”,因此我无法使用您的示例。相反,我将使用随机图来说明。

## Generate random graph
library(igraph)
set.seed(1234)
g = erdos.renyi.game(15, 0.2)

## Your code to generate labels
random_list <- sample(c(TRUE,FALSE), gorder(g), TRUE) 
V(g)$label <- random_list

您可以编写一个小函数来测试边的末端是否具有相同的标签并将其应用于所有边。然后删除两端相同的那些。

SameLabel = function(e) {
    V(g)[ends(g, e)[1]]$label == V(g)[ends(g, e)[2]]$label }
g2 = delete_edges(g, which(sapply(E(g), SameLabel)))

您可以通过绘图来检查它是否正在做正确的事情。

set.seed(1066)
LO = layout_with_fr(g)
par(mfrow=c(1,2), mar=c(1,1,1,1))
plot(g, layout=LO, frame=TRUE)
plot(g2, layout=LO, frame=TRUE)

reduced graph

其中一些看起来是错误的,因为远程节点之间的链接落后于相反类型的其他节点。

以上是关于使用Igraph中的顶点标签删除边的主要内容,如果未能解决你的问题,请参考以下文章

如何将值向量分配给R中igraph中的顶点标签?

在 Python 的 igraph 中删除多条边

iGraph 中的介数计算

IGraph:直到停止节点/顶点的网络距离

R语言igraph包绘制社会网络图

igraph 中的二度连接