欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

R語(yǔ)言中igraph包的用法(鄰接矩陣)

 更新時(shí)間:2021年04月19日 09:24:44   作者:today__present  
這篇文章主要介紹了R語(yǔ)言中igraph包的用法(鄰接矩陣),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

先導(dǎo)入igraph包:

library(igraph)

graph包最簡(jiǎn)單的用法就是graph方法,兩句代碼就完成繪制如下所示,1的loop表示為(1,1),1和2之間有3條edge,表示為(1,2,1,2,1,2)

g <- graph(c(1,1,1,2,1,2,1,2,1,5,2,3,2,4,2,5,3,3,3,4,3,4,3,4,4,5),directed = FALSE)
plot(g)

如果用頂點(diǎn)的鄰接矩陣表示,仍以上圖為例:

則對(duì)1,1有l(wèi)oop,與2有條edge,與5有一條edge,所以鄰接矩陣的第一行為(1,3,0,0,1);

類(lèi)似地,可以得出鄰接矩陣的第2、3、4、5行;按列輸入上述矩陣:

cell <- c(1,3,0,0,1,3,0,1,1,1,0,1,1,3,0,0,1,3,0,1,1,1,0,1,0)                                     
cell <- matrix(cell,5,5,byrow=T) 

使用graph.adjacency方法:

cnames <- c('a','b','c','d','e')                                         
g <- graph.adjacency(cell,mode="undirected")plot(g,vertex.label=cnames)#繪出圖像

補(bǔ)充:R語(yǔ)言學(xué)習(xí)-提取igraph的節(jié)點(diǎn)和邊

網(wǎng)絡(luò)分析的時(shí)候,可能需要提取出網(wǎng)絡(luò)中的節(jié)點(diǎn)或者邊,igraph包中其實(shí)提供了很多可用的函數(shù)。

#創(chuàng)建網(wǎng)絡(luò)方法之一:data.frame
data<-data.frame(id1=c(1,1,2,3,4,4,5,5,6,6,7,8,8,9,10,5,15,6,7,16),id2=c(2,11,11,12,13,14,15,16,7,15,16,17,18,18,9,19,19,19,19,19))
g <- graph_from_data_frame(data, directed=FALSE)    #directed 參數(shù)控制graph 有無(wú)方向
g
IGRAPH UN-- 16 17 -- 
+ attr: name (v/c)
+ edges (vertex names):
 [1] 1 --2  2 --3  3 --4  1 --4  5 --7  5 --6  5 --8  7 --6  7 --8  6 --8  9 --10 9 --13 11--10 11--12 12--13 14--15 1 --16
#圖形顯示
plot(g)

#V(g)和E(g)可以用來(lái)查看網(wǎng)絡(luò)g的節(jié)點(diǎn)和邊
 V(g)
+ 16/16 vertices, named:
 [1] 1  2  3  5  7  6  9  11 12 14 16 4  8  10 13 15
E(g)
+ 17/17 edges (vertex names):
 [1] 1 --2  2 --3  3 --4  1 --4  5 --7  5 --6  5 --8  7 --6  7 --8  6 --8  9 --10 9 --13 11--10 11--12 12--13 14--15 1 --16
#但問(wèn)題是怎么將里面的數(shù)據(jù)提取出來(lái)放到變量里面呢?
#節(jié)點(diǎn)提取有個(gè)函數(shù)get.vertex.attribute(g)
get.vertex.attribute(g)
$name
 [1] "1"  "2"  "3"  "5"  "7"  "6"  "9"  "11" "12" "14" "16" "4"  "8"  "10" "13" "15"
#查看類(lèi)型可知是list
class(get.vertex.attribute(g))
[1] "list"
#剩下的就簡(jiǎn)單了
node<-get.vertex.attribute(g)[[1]]
node
 [1] "1"  "2"  "3"  "5"  "7"  "6"  "9"  "11" "12" "14" "16" "4"  "8"  "10" "13" "15"
#至于邊呢?可以使用get.edgelist()
get.edgelist(g)
      [,1] [,2]
 [1,] "1"  "2" 
 [2,] "2"  "3" 
 [3,] "3"  "4" 
 [4,] "1"  "4" 
 [5,] "5"  "7" 
 [6,] "5"  "6" 
 [7,] "5"  "8" 
 [8,] "7"  "6" 
 [9,] "7"  "8" 
[10,] "6"  "8" 
[11,] "9"  "10"
[12,] "9"  "13"
[13,] "11" "10"
[14,] "11" "12"
[15,] "12" "13"
[16,] "14" "15"
[17,] "1"  "16"
#類(lèi)型是matrix矩陣可以直接使用
class(get.edgelist(g))
[1] "matrix"

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

相關(guān)文章

最新評(píng)論