2013-06-21 73 views
0

我對R非常新,我需要建立一個基因網絡。我有一個基因列表及其相應的圖案。我知道我的基因將成爲我的頂點,主題將成爲我的邊緣。我知道我必須先製作一個數據框。那麼,我怎樣才能製作一個可以從下面繪製出來的數據框呢?使用圖開發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 
+0

無法生成具有4個邊和3個節點的網絡。你的真實網絡有更多的節點嗎? –

+0

如果您指定了一個可行的網絡,我可以幫助您使用'igraph'創建一個網絡。 –

+0

非常感謝。我將編輯我的問題並輸入實際數據。 – user2498657

回答

1

您離得更近,但您的數據看起來有點有趣。有許多不同的方式可以以可以解釋的形式向igraph提供數據。你應該爲自己確定你喜歡哪一個。我更喜歡edgelist格式,所以我在這裏介紹。這種格式要求您定義每條邊的來源和目的地。您可以在下面的示例中看到我使用CSV中的第三列向屬性數據提供了圖形,這使我可以使用繪圖函數標記邊緣。

下面是一些例子,你可以寫:

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) 

有在EdgeList都幾點要求。第一列被定義爲源列,第二列是目標。在有向網絡中,從源到目標繪製箭頭。在無向網絡中,這是無關緊要的。

所有的邊都需要源和目標。您需要檢查您的網絡以確保滿意。

This是一個很好的資源開始。對於採集原始數據並將其轉化爲網絡沒有多大幫助,因爲這些示例使用了內置網絡。

+1

非常感謝您的幫助。 – user2498657