4

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

g2saraguro <- subgraph(g6, which(V(g6)$ethnic=="saraguro"))
摘要(g2saraguro)

确实有效:

顶点:166
边:330
定向:TRUE
没有图形属性。
顶点属性:ii、村庄、parroquia、canton、provinz、kindR、ethnic、situation、researcha。
边缘属性:问题、活动。

但是,如果我尝试对 进行相同mestizo操作,则会出现问题,因为它只是识别:

s2mestizo <- subgraph(g6,V(g6)$ethnic=="mestizo")
摘要(s2mestizo)
顶点:2
边:3有向
:TRUE
没有图形属性。
顶点属性:ii、村庄、parroquia、canton、provinz、kindR、ethnic、situation、researcha。
边缘属性:问题、活动。

但实际上并非如此,如果我看到:V(g6)$ethnicmestizo大多数!!
我真的不知道问题出在哪里,igraph 0.6形成 a 的程序 subgraph应该以那种或类似的方式,没有1-based indexing
非常感谢
弗拉基米尔的任何
帮助

4

1 回答 1

3

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

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

你应该写

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

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

编辑:根据您最近的评论,您似乎使用的是 igraph 0.5.x 或更早版本(因为summary0.6 的输出格式不同)。在这种情况下,您必须从结果中减去 1,which因为 igraph 0.5.x 和更早版本使用从零开始的顶点索引。因此,正确的行应该是:

s2mestizo <- subgraph(g6, which(V(g6)$ethnic=="mestizo")-1)
于 2012-09-11T19:03:20.323 回答