4
十分に簡単な質問であるべきですが、実際にこれを行う方法はわかりません。私は言う、持って、図のグラフ:R iGraph:一定の規則を満たす頂点を選択する方法
すべてのノードは、日付を持っていると私は外度最大を持つノードを見つけたい、唯一の中央値の前に日付を持っているものの中で。 私はこれを試してみました:
library(igraph)
nodes <- data.frame(name=c("a", "c", "d", "e", "f", "g", "i", "j", "k"),
date = c(27, 13, 0, 18, 0, 8, 44, 26, 22))
relations <- data.frame(from=c("d", "d", "f", "f","f", "g","g","g","c","c", "e"),
to=c("i", "f","d","c","g","k","a","c","a", "e","j"))
ggg <- graph.data.frame(relations, directed=TRUE, vertices=nodes)
V(ggg)$label <- V(ggg)$name
plot(ggg, layout = layout.fruchterman.reingold.grid, edge.curved=FALSE,
edge.arrow.size=0.2,edge.arrow.width=0.4)
V(ggg)$label <- V(ggg)$date
plot(ggg, layout = layout.fruchterman.reingold.grid, edge.curved=FALSE,
edge.arrow.size=0.2,edge.arrow.width=0.4)
median_delay <- median(V(ggg)$date)
vert_before_median <- V(ggg)[ V(ggg)$date <= median_delay ]
wnodes <- V(ggg)$name[ degree(ggg,v=vert_before_median,mode="out")==max(degree(ggg,v=vert_before_median,mode="out")) ]
すべてはここまでOKのようだ:私は、このプロパティを満たすノードを保持したいとき
> degree(ggg,v=vert_before_median,mode="out")==max(degree(ggg,v=vert_before_median,mode="out"))
c d e f g
FALSE FALSE FALSE TRUE TRUE
しかし、その後、私はトラブルに巻き込まれます。私は私が私がグラフから頂点を選択しようとする方法で何かが欠けてるようだ代わりに
> wnodes
[1] "e" "f" "k"
、wnodes
はノード「F」および「G」を含まなければならないと思いました。私はwhich
で試しましたが、それでも正しくはありません:
> V(ggg)[which(degree(ggg,v=vert_before_median,mode="out")==max(degree(ggg,v=vert_before_median,mode="out")) )]
Vertex sequence:
[1] "e" "f"
何か考えてください。
ありがとうございました!明日あなたのソリューションを試してみるつもりですが、私は自分のMacにiGraphパッケージをインストールするのに夢中です! – Nonancourt
ちょうど確認しました、それは私が欲しいものです。ありがとう!私はまた、それをより自己完結させるために質問を編集しました。 – Nonancourt