R iGraph : How to select vertices satisfying a certain rule

标签 r igraph

这应该是一个足够简单的问题,但我真的不知道如何做到这一点。我有,说,图中的图形:

enter image description here

每个节点都有一个日期,我想找到出度最大的节点,只在日期在中位数之前的节点中。
我试过这个:

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")) ] 

到这里似乎一切正常:
> 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应该包含节点“f”和“g”,而不是
> wnodes
[1] "e" "f" "k"

似乎我在尝试从图中选择顶点的方式中遗漏了一些东西。我试过 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"

任何的想法?

最佳答案

子集 vert_before_median 而不是所有顶点,你应该得到你想要的,

wnodes <- vert_before_median[ degree(ggg,v=vert_before_median,mode="out")==max(degree(ggg,v=vert_before_median,mode="out")) ]

在上面的代码中,当您使用 R 对长度为 9 的所有顶点进行子集化时,R 会自动循环通过长度为 5(FALSE、FALSE、FALSE、TRUE、TRUE)的逻辑向量。

关于R iGraph : How to select vertices satisfying a certain rule,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37880105/

相关文章:

python - 我如何显示 igraph 输出?

r - 如何在 R 中求解三次函数

r - 获取 "mlm"返回的 `lm()` 对象的回归系数的置信区间

r - 从间隔列表中模拟随机位置

r - 按属性对网络节点进行聚类

r - igraph 中的 assortativity.nominal

javascript - 在 VisNetwork Igraph 中为顶点添加颜色

r - 将表示天数的时间小数/分数转换为 R 中的实际时间?

r - r 中的简单函数

python - 通过 anaconda (libxml2.2.dylib) 在 OSX 10.10.5 中导入 python igraph 时出错