2017-02-15 91 views
0

我有一個與研究人員及其附屬機構合作的二分網絡。這些機構有一個表示其國家的頂點屬性(在V(sg)$ country中)。我想將這個屬性複製到與節點連接的每個研究人員,以便「a」具有「中國」的「國家」屬性,並且在下面的示例中「e」具有「美國」:將頂點屬性複製/設置爲二分圖中的相鄰頂點

link to graph

此外,一些研究人員在整個職業生涯中都轉移到了其他國家的機構,因此與多家機構相關。在這種情況下,如果他們從屬於他們最常見的國家獲得屬性(例如:「c」會得到「中國」而不是「法國」),那麼這將是理想選擇。

我對編碼非常陌生,這是我的第一個問題在這裏,所以我提前給我noobish方式道歉

重複的例子,

library(igraph) 

set.seed(1) 
sg<-sample_bipartite(10, 5, p=.3) 

countries<-c("US","France","China") 
V(sg)[type=="TRUE"]$country<-sample(countries,replace=TRUE,5) 

V(sg)[type=="FALSE"]$label <- c("a","b","c","d","e","f","g","h","i","j") 
V(sg)[type=="TRUE"]$label <- V(sg)[type=="TRUE"]$country 
V(sg)$color[1:10] <- rgb(0,1,0,.5) 
V(sg)$color[11:15] <- rgb(1,0,0,.5) 
plot(sg) 
+1

目前還不清楚是什麼你」再aski NG。你可以說得更詳細點嗎?通常情況下,如果你問一個小而有限的問題,你會得到更多/更好的答案 - 模糊的「我該怎麼做」的問題通常不會得到答案。 –

+0

也許你可以澄清這個樣本輸入的期望輸出。你想添加一個新的屬性,所有的節點都帶有'type ==「TRUE」',它包含它們連接的最常見的國家?在領帶(即'd')的情況下會發生什麼? – MrFlick

回答

0

下面是做這件事:

library(igraph) 

set.seed(1) 
sg<-sample_bipartite(10, 5, p=.3) 

countries<-c("US","France","China") 
V(sg)[type=="TRUE"]$country<-sample(countries,replace=TRUE,5) 

V(sg)[type=="FALSE"]$label <- c("a","b","c","d","e","f","g","h","i","j") 
V(sg)[type=="TRUE"]$label <- V(sg)[type=="TRUE"]$country 
V(sg)$color[1:10] <- rgb(0,1,0,.5) 
V(sg)$color[11:15] <- rgb(1,0,0,.5) 
plot(sg) 


idx <- V(sg)$type==0 
res <- lapply(ego(sg, idx, order = 1), function(x) 
    names(tail(sort(table(V(sg)$country[x[-1]])), 1)) 
) 
V(sg)$country[idx] <- res 
unlist(V(sg)$country[V(sg)$label=="a"]) 
# [1] "China" 
unlist(V(sg)$country[V(sg)$label=="e"]) 
# [1] "US" 
unlist(V(sg)$country[V(sg)$label=="c"]) 
# [1] "China" 
+0

這樣做!謝謝! – samitakamaki

相關問題