2012-09-11 61 views
4

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

g2saraguro < - 子(G6,其中(V(G6)$民族== “saraguro”))
摘要(g2saraguro)

该做的工作:

顶点:166个
边缘:330
指示:真
无图属性。
顶点属性:ii,村,parroquia,州,provinz,kindR,种族,情况,研究。
边缘属性:问题,活动。

不过,如果我尝试用mestizo一样,有一个proble,因为它只是识别:

s2mestizo < - 子(G6,V(G6)$民族== “混血” )
摘要(s2mestizo)
顶点:2个
边缘:3
导演:TRUE
无图形的属性。
顶点属性:ii,村,parroquia,州,provinz,kindR,种族,情况,研究。
边缘属性:问题,活动。

但在没有的情况下,如果我看到的现实:V(g6)$ethnicmestizo是多数!!
我真的鸵鸟政策知道问题出在哪里,用igraph 0.6程序,形成subgraph应以这种方式或类似的方式,没有1-based indexing
非常感谢您的帮助
问候
弗拉基米尔

回答

3

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

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

你应该写

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

另外请注意,如果您使用的igraph 0.5.x或更早的版本,则必须从which因为基于0的结果中减去1 igraph的索引。这已在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) 
+0

由于它的工作!这也许是指出错误的问题,但我只是想知道为什么[R告诉IGRAPH 0.6是actuallized, – Vlad

+0

哪里或者什么时候 - [R说它是“执行”?我甚至不知道是什么意思... –

+0

也很抱歉,我的意思是,如果我实现igraph 0.5x到igraph 0.6,R没有任何问题,但在这种情况下,我仍然必须减去1。 – Vlad