使用图形在R中开发网络

时间:2013-06-21 21:13:04

标签: r dataframe igraph

我是R的新手。我需要建立一个基因网络。我有一系列基因及其相应的图案。我知道我的基因将是我的顶点,图案将是我的边缘。我知道我必须先制作一个数据框。那么,我如何制作一个可以从下面绘制的数据框?

>GENE1

hsa-miR-24-1-5p    
hsa-miR-24-2-5p    

>GENE2

hsa-miR-124-5p
hsa-miR-223-5p
hsa-miR-203a
hsa-miR-219-1-3p   

>GENE 3

hsa-miR-124-5p
hsa-miR-203a   

>GENE 4

hsa-miR-203a
hsa-miR-221-3p
hsa-miR-222-3p
hsa-miR-24-1-5p
hsa-miR-24-2-5p   

>GENE 5

hsa-miR-192-3p   

>GENE 6

hsa-miR-223-5p
hsa-miR-124-5p   

>GENE 7

hsa-miR-221-3p
hsa-miR-222-3p
hsa-miR-219-1-3p   

1 个答案:

答案 0 :(得分:1)

你离得更近,但你的数据看起来有点滑稽。有许多不同的方法可以以可以解释的形式向igraph提供数据。您应该自己确定哪种适合您。我更喜欢edgelist格式,所以我在这里提出。此格式要求您定义每个边的源和目标。您可以在下面的示例中看到我使用CSV中的第三列向igraph提供属性数据,这允许我使用绘图函数标记边缘。

以下是您可以编写的示例:

library(RCurl)
library(igraph)

el <- read.csv(text = "Source,Target,name
               GENE1,GENE2,hsa-miR-24-1-5p
               GENE2,GENE3,hsa-miR-124-5p
               GENE2,GENE4,hsa-miR-223-5p")
nodes <- read.csv(text = "Node
                  GENE1
                  GENE2
                  GENE3
                  GENE4")

g <- graph.data.frame(el,directed=TRUE, vertices=nodes)
plot(g, edge.label=E(g)$name)

边缘列表中有一些要求。第一列定义为源列,第二列定义为目标。在定向网络中,从源到目标绘制箭头。在无向网络中,这是无关紧要的。

所有边缘都需要源和目标。您需要检查您的网络以确保满意。

This是一个很好的资源。由于示例使用了内置网络,因此将原始数据转换为网络并没有多大帮助。