2017-05-17 160 views
1

我对igraph(R)有非常基本的问题:重命名节点ID。igraph R顶点ids变更

例如,我有以下图形的边界列表。

10,12 
10,14 
12,14 
12,15 
14,15 
12,17 
17,34 
17,100 
100,34 

我想计算每个节点的局部聚类系数。首先,我使用readcsv阅读了对象g中的边界列表。然后,我使用以下命令为每个节点转储本地CC。

write.csv(transitivity(g,type="local"),file="DumpLocalCC.csv") 

现在的问题是,改变的igraph节点ID从1开始,我得到以下输出

"","x" 
"1",NA 
"2",0.333333333333333 
"3",0.333333333333333 
"4",0.333333333333333 
"5",1 
"6",1 
"7",1 

现在我怎么能百忍哪个节点ID是什么?也就是说,如果输出文件中的7指向100或34? 无论如何,我们可以强制igraph转储像10,34,100等实际节点和它们各自的本地CC?

我是谷歌搜索,发现人们建议“V(g)$ name < - as.character(V(g))”来保存nodeids。然而,我尝试过,我认为我没有正确使用它。 此外,由于数据量很大,我不想手动更改节点ID以使它们从1 ...开始连续。

P.s:Here我注意到一个类似的问题已经被问到。有人建议“将这些数字分配为顶点名称”。 如何做到这一点? 有人可以举例说明吗?

另一个类似的问题,如this(我了解它的类似问题),其中有人建议打开一个问题。我不确定这是否已经解决?

在此先感谢。

+0

它会更容易帮助你,如果你提供了正确的[重复的例子(http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible例如)用代码我们可以复制/粘贴到R中进行测试。准确显示如何创建图形对象。 – MrFlick

+0

已提供边缘列表。我使用以下代码来读取它 DF < - read.csv(“EDGELIST.csv的路径”) g < - graph.DF(advice_data_frame)和以上我提供了如何计算聚类系数(传递性)和将其倾倒在文件中 – raj

回答

3

您只需在编写表时将统计信息与节点名称结合使用。例如

DF <- read.csv(text="10,12 
    10,14 
    12,14 
    12,15 
    14,15 
    12,17 
    17,34 
    17,100 
    100,34", header=FALSE) 
g <- graph.data.frame(DF) 
outdata <- data.frame(node=names(V(g)), trans=transitivity(g, type="local")) 
write.csv(outdata, file="DumpLocalCC.csv") 
+0

谢谢!这解决了这个问题。 – raj