2017-11-10 10 views
2

現在、このコードを実行してノード属性 "a"の値が1の接続ノードの数を調べます。実際の数ではなく、属性 "a"の値を持つ接続ノードの割合を出力するように、次のコードをどのように変更しますか?特定の属性値を持つigraphの接続ノードの割合を求める

library(igraph) 
g <- make_empty_graph (2) %>% 
    set_vertex_attr("a", value = 1) %>% 
    set_vertex_attr("xyz", value = 1) %>% 
    add_vertices(2, color = 2, "a" = 1) %>% 
    add_vertices(2, color = 4, "a" = 1) %>% 
    add_edges(c(1,2, 2,1, 1,5, 5,1, 1,4 ,4,1)) 

V(g)$xyz <- sapply(V(g), function(x) { NeighborList = neighbors(g, x) ; length(NeighborList[NeighborList$a == 1]) }) 
V(g)$xyz 

答えて

2

あなたは何も存在しない場合を除いて、隣人の数で割ることができます。

sapply(V(g), function(x) { 
     NeighborList = neighbors(g, x) ; 
     ifelse(length(NeighborList) > 0, 
     length(NeighborList[NeighborList$a == 1])/length(NeighborList),0) }) 
[1] 1 1 0 1 1 0 
関連する問題