删除无边的自环和顶点

标签 r igraph

我正在构建一个基因网络。我有一个两列数据框,将其转换为邻接矩阵,并在igraph中使用它。问题是我有带有自环的基因,我想摆脱自环,然后摆脱网络中没有边(也许是孤立的)的顶点。我已经尝试了一些方法,但是以某种方式它们不起作用。我的代码是

 InnatedGraph <- graph.data.frame(innate,directed=FALSE)
 V(InnatedGraph)$label.cex = 0.4
 plot(InnatedGraph,vertex.label=V(InnatedGraph)$symbol, vertex.size=5)

先天是我的两列数据框。我已经尝试过度函数来删除0度的顶点,但是我想不幸的是它不起作用(也许因为自环基因的度为1)。
bad.vs<-V(InnatedGraph)[degree(InnatedGraph) == 0] 
clean <-delete.vertices(InnatedGraph, bad.vs)

我尝试使用BioNet软件包“rmSelfLoops”中的另一个函数,借助该函数,我可以删除自环边,但仍然无法删除没有边的顶点。
test<-rmSelfLoops(InnatedGraph)

我还将包括我的网络的图片,以使其更易于理解。 enter image description here

最佳答案

考虑该示例图及其两个子集/修改:

library(igraph)
set.seed(1)
g <- random.graph.game(10, p.or.m = 3, "gnm") + edge(7,7)
coords <- layout.auto(g)
par(mfrow = c(1,3))
plot(g, layout = coords)
plot(simplify(g), layout = coords) # remove loops and multiple edges
plot(delete.vertices(simplify(g), degree(g)==0)) # additionally delete isolated nodes

enter image description here

使用来自注释的OP样本数据:
df <- read.csv(header=F, row.names = 1, stringsAsFactors=F, text='"53","ENSG00000175104","ENSG00000175104"
"54","ENSG00000174775","ENSG00000175104"
"55","ENSG00000032688","ENSG00000027164"
"56","ENSG00000175104","ENSG00000140968"
"57","ENSG00000027164","ENSG00000041515"
"58","ENSG00000027164","ENSG00000025498"')
library(igraph)
( dfclean <- subset(df, V2!=V3) ) # remove rows where source==target
#                V2              V3
# 54 ENSG00000174775 ENSG00000175104
# 55 ENSG00000032688 ENSG00000027164
# 56 ENSG00000175104 ENSG00000140968
# 57 ENSG00000027164 ENSG00000041515
# 58 ENSG00000027164 ENSG00000025498
par(mfrow = c(1,3))
plot(graph_from_data_frame(df), edge.arrow.size = .5) # orig
plot(simplify(graph_from_data_frame(df)), edge.arrow.size = .5) # same as
plot(graph_from_data_frame(dfclean), edge.arrow.size = .5) # this one

关于删除无边的自环和顶点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40086031/

相关文章:

javascript - 使用不同颜色(不是渐变)为 SVG 路径着色的有效方法

c++ - Igraph 特征向量中心性运行时错误 c++

r - 在 R 中的 igraph 中,是否可以在顶点对象周围创建虚线?

python - 使用 R/igraph,有没有办法在考虑唯一节点属性的计数的情况下找到节点之间的最短路径?

Rstudio 未在 Ubuntu 22.04 上启动 - 加载共享库 : libcrypto. so.1.1 时出错

R:修改应用于 S4 类的任何函数

r - 从类(class)列表中查找当前事件条目

python - 用anaconda2 pip安装python-igraph,找不到C核心。 Linux Fedora 24

r - 有条件地选择列表中对象的元素位置并返回具有对象元素位置的新列表

r - 如何在 R 中使用 ggplot 绘制绘图区域的 'outside'?