R語言igraph包的使用

2021-07-22 02:53:03 字數 2933 閱讀 9266

igraph包是乙個用來解決圖與網路問題以及對其進行視覺化的包,前幾天數學建模做圖論的作業我就是用的這個包,這篇部落格就寫一下如何解決圖論中的最短路問題,最大流問題和最小生成樹問題,以及圖的視覺化。

需要宣告,我是在看了這個文件(密碼為jyhn)之後才寫的這篇部落格,但該文件之中有些內容已經過時

首先自然要建立乙個圖的物件,igraph包中建立圖的物件的函式是

make_graph(edges, ..., n = max(edges), isolates = null,directed = true,dir = directed, simplify = true)
其中edges引數為邊組成的向量,這個向量中的元素既可以是數字也可以是字元,也可以是literals引數(但不經常用)。比如如果是數字,c(1,2)表示一條從點1到點2的邊,c(1,2,2,3)表示兩條邊,一條從1到2,另一條從2到3,注意圖中的點的編號不能用0來命名,否則會報錯,至於原因就不太清楚啦;字母的原理與數字相同

n為最大邊數,只在edges引數中的元素是數字的時候有用,但我還是不太清楚這個引數的實質作用是什麼,好像一般情況下用不到。

isolates為孤立的點組成的向量,但只有在edges引數中的元素是字元時才有用,比如make_graph(c('a','b','b','c'),isolates = c('d','e'))這個圖有兩條邊ab,bc,還有兩個孤立的點d和e.

directed為乙個布林型引數,true表示有向圖,false表示無向圖,dir引數與directed引數是一樣的,但兩者不能同時出現(為什麼不乾脆去掉乙個。。。汗)。

simplify引數只有在edges引數使用literals時才有用。

可以用如下語句建立乙個圖的物件

library(igraph)

m #建立乙個有向圖

g #建立乙個無向圖

h

我們有時候研究的有些圖是有權的,怎麼給圖賦權呢

graph_attr(g,'weight') 

#或g

#也可以用第乙個函式獲得圖的權

graph_attr(g,'weight')#得到g的權

圖已經建立好了,怎麼把它畫出來呢?這時候就要用到萬能的plot()函式了,plot()函式是乙個泛型函式,如果第乙個引數是圖物件,那麼它實際上呼叫的是plot.graph()函式

plot(graph_object,edge.label,vertex.label,...)
edge.label引數控制點的標籤,

vertex.label引數控制邊的標籤

...plot()函式原有的控制大小顏色等的引數和plot.graph()中新增的引數,這些都可以通過幫助文件找到

得到圖的物件之後就可以求解最短路,最小生成樹和最大流問題了。

#求最大流,source為起點,target為終點,capcity為每條邊的最大容量,要注意與邊的順序

#對應graph.maxflow(g,source = 1,target = 8,capacity = graph_attr(g,'weight'))

#會返回乙個列表,裡面有各個需要的值

#求最小生成樹

mst(g,weights = graph_attr(g,'weight'))

#注意:這裡的weights如果預設,則會使用null,並不會使用圖自身的權重,感覺這裡

#略坑

#求最短路

#shortest_paths(graph, from, to = v(graph), mode = c("out", #"all", "in"),

# weights = null, output = c("vpath", "epath", "both"),

# predecessors = false, inbound.edges = false)

#最重要的幾個引數為graph,from,to,weights,from為起點,to為終點,可以缺

#省,如果預設則會計算起點到其他所有點的最短路,weights為權重

shortest_paths(g,1,weights = graph_attr(g,'weight'))

R語言getopt包的使用

1 載入包 library getopt 2 spec matrix c help h 0,logical infile i 1,character outfile o 1,character group.col g 1,integer x.col x 1,integer y.col y 1,int...

r 語言edgr edgeR 包的使用

edger包是進行rna seq資料分析非常常用的乙個r包。該包需要輸入每個基因關於每個樣本的reads數的資料,每行對應乙個基因,每一列對應乙個樣本。建議使用htseq count進行統計,輸出檔案即可直接使用。如果需要算rpkm,需要自己統計基因長度資訊。第一步 構建 dgelist類變數 ed...

包r語言 R語言入門之R包的安裝

install.packages metafor 即可順利安裝該r包。install.packages biocmanager library biocmanager install edger 3 接下來便是安裝源自github 的r包了,它的步驟和安裝源自bioconductor的r包類似,需要...