如何:
庫克,一些數據(我希望你會做飯對我來說:))
library(igraph)
set.seed(666)
# herbivore-plant
m_hp <- matrix(rbinom(12, 10, p=0.2), 4, 3)
dimnames(m_hp) <- list(
consuming=paste0("h", seq(1, nrow(m_hp))),
consumed=paste0("p", seq(1, ncol(m_hp)))
)
# carnivore-herbivore
m_ch <- matrix(rbinom(20, 10, p=0.2), 5, 4)
dimnames(m_ch) <- list(
consuming=paste0("c", seq(1, nrow(m_ch))),
consumed=paste0("h", seq(1, ncol(m_ch)))
)
...所以它看起來像你(我相信):
m_hp
## consumed
## consuming p1 p2 p3
## h1 3 1 0
## h2 1 3 1
## h3 5 5 3
## h4 1 2 0
m_ch
## consumed
## consuming h1 h2 h3 h4
## c1 0 4 0 2
## c2 1 2 1 2
## c3 1 2 3 3
## c4 3 5 1 2
## c5 0 2 0 2
現在通過edgelists把他們變成的igraph對象
el_hp <- as.data.frame(as.table(m_hp), stringsAsFactors = FALSE)
el_ch <- as.data.frame(as.table(m_ch), stringsAsFactors = FALSE)
el <- rbind(el_hp, el_ch)
g <- graph.data.frame(el[el$Freq != 0 , ] )
V(g)$type <- substr(V(g)$name, 1, 1)
聯合網絡的鄰接矩陣:
get.adjacency(g, sparse=FALSE, attr="Freq")
## h1 h2 h3 h4 c2 c3 c4 c1 c5 p1 p2 p3
## h1 0 0 0 0 0 0 0 0 0 3 1 0
## h2 0 0 0 0 0 0 0 0 0 1 3 1
## h3 0 0 0 0 0 0 0 0 0 5 5 3
## h4 0 0 0 0 0 0 0 0 0 1 2 0
## c2 1 2 1 2 0 0 0 0 0 0 0 0
## c3 1 2 3 3 0 0 0 0 0 0 0 0
## c4 3 5 1 2 0 0 0 0 0 0 0 0
## c1 0 4 0 2 0 0 0 0 0 0 0 0
## c5 0 2 0 2 0 0 0 0 0 0 0 0
## p1 0 0 0 0 0 0 0 0 0 0 0 0
## p2 0 0 0 0 0 0 0 0 0 0 0 0
## p3 0 0 0 0 0 0 0 0 0 0 0 0
圖形
t <- match(V(g)$type, c("p", "h", "c"))
plot(g, vertex.color=t)
甚至
l <- layout_with_fr(g, miny=t, maxy=t )
plot(g, vertex.color=t, layout=l, edge.width=E(g)$Freq)
我對你如何寫方向性感到困惑......你能提供一個(玩具)數據的例子嗎? –
您好, 起初,我有兩個二分網絡: 例如: 偶網絡1探討植物蟲害(A-B)之間的關係。雙向網絡2探索草食動物捕食者(B-C)之間的關係。 我想獲得一個代表A,B,C之間關係的新矩陣。 由於捕食者只能食草動物,而食草動物只能以植物爲食(食肉動物不可能以食草動物爲食,或食草動物以食肉動物爲食),所以我需要一個定向網絡(如食物網)。 請點擊鏈接查看玩具數據。 [鏈接] https://goo.gl/Gc9tMF –