iGraph创建子图

时间:2012-09-11 11:27:17

标签: r igraph

我有以下问题:
我有以下图表:g6,其中不包含isolate vertices。顶点主要分为两个ethnic groups,作为属性给出,即:mestizo and saraguro 所以我为saraguros运行subgraph选项如下:

  

g2saraguro< - 子图(g6,其中(V(g6)$ ethnic ==“saraguro”))
      摘要(g2saraguro)

确实有效:

  

顶点:166
      边缘:330
      指导:TRUE
      没有图表属性。
      顶点属性:ii,村庄,parroquia,canton,provinz,kindR,种族,情况,研究。
      边缘属性:问题,活动。

但是,如果我对mestizo尝试相同的操作,则存在问题,因为它只是识别:

  

s2mestizo< - subgraph(g6,V(g6)$ ethnic ==“mestizo”)
      摘要(s2mestizo)
      顶点:2
      边缘:3
      指导:TRUE
      没有图表属性。
      顶点属性:ii,村庄,parroquia,canton,provinz,kindR,种族,情况,研究。
      边缘属性:问题,活动。

但实际情况并非如此,如果我看到:V(g6)$ethnicmestizo占多数!!
我真的不知道问题出在哪里,igraph 0.6 subgraph形成1-based indexing的过程应采用相同或相似的方式,而不是{{1}}。
非常感谢任何帮助 至于
弗拉基米尔

1 个答案:

答案 0 :(得分:3)

您忘记在第二种情况下使用which功能;即,而不是

s2mestizo <- subgraph(g6,V(g6)$ethnic=="mestizo")

你应该写

s2mestizo <- subgraph(g6, which(V(g6)$ethnic=="mestizo"))

另请注意,如果您使用的是igraph 0.5.x或更早版本,则必须从which的结果中减去1,因为igraph的基于0的索引。这已在igraph 0.6中修复,因此如果您使用的是igraph 0.6或更高版本,则无需减去1。

修改:根据您最近的评论,看起来您正在使用igraph 0.5.x或更早版本(因为summary的输出格式与0.6不同)。在这种情况下,必须which的结果中减去1,因为igraph 0.5.x及更早版本使用从零开始的顶点索引。因此,正确的行应该是:

s2mestizo <- subgraph(g6, which(V(g6)$ethnic=="mestizo")-1)