2016-04-07 10 views
1

グラフでは、ノード/頂点の束がエッジで接続されており、各エッジには特定の数値属性値があります。グラフはgです。私は(;方向は、ここでは関係ありません来たり行く)各頂点に接続され、最高と最低att番号を追加する必要があり、可視化の目的のためにRでIGraphを使うと、各頂点に接続されている頂点の属性値の最高値と最低値を計算する方法は?

v1 v2 att 
a b 17 
a c 6 
a d 2 
b c 9 

:エッジリストは、次のようになります。

に接続されたリンクの最大ATT値は17であり、最小は2

あるため、だから、例えば私は、2のために17およびv$minためv$maxを設定したいです私は、このテーマに沿っていくつかのバリエーションを試してみました:

V(g)$min=min(E(g)[incident(g,V(g), mode='total')]$att) 

これは非常に近い右の私が単一ノード上でそれをしようとしたときのように、正しい答えを与えるために表示されていることであるように思わ

min(E(g)[incident(g,V(g)[2], mode='total')]$att) 

しかし、すべてのノードで試してみるとうまくいきません。目的はすべての頂点に対してとV(g)$maxを設定することです。

答えて

1

うまくいけば、これはあなただけで汎化一部に

library(igraph) 
library(plyr) 
df <- data.frame(read.table(text="v1 v2 weight 
a b 17 
a c 6 
a d 2 
b c 9", header=T)) 
df$weight <- as.numeric(df$weight) 

#transform df into igraph 
g <- graph.data.frame(df, directed=F, vertices=NULL)  

#for each vertex, get all incidental edges, weights and use range to find min & max 
ldply(V(g), function(v) range(incident(g, v, mode='total')$weight)) 
+0

おかげで欠落していた、宿題の問題ではありません!これは宿題の問題ではありませんが、自家製です(時間的グラフ)。私は、私が今までに経験したほどの教育を受けているエンジニアです(私は、明らかに:私はそうすべきであるほど教育はされていませんが、特にラップは/私の友人ではありません)。私は答えを受け入れた:もう一度ありがとう! ところで、元のアプローチがうまくいかない理由は何ですか?私はそれがちょっと困惑しているのを見つけました - バグを見ることができません:) – socstuff

+0

それは働くことができます。それは一般化していないだけです。あなたはサプリー(1:長さ(V))、関数(n)分(E(g)[インシデント(g、V(g)[n]、モード= '合計')] $ att)) – chinsoon12

関連する問題