R 将图形写入文件不保留顶点名称
当我试图将图形写入文件时,输出文件不会保留顶点名称。 代码如下:R 将图形写入文件不保留顶点名称,r,igraph,R,Igraph,当我试图将图形写入文件时,输出文件不会保留顶点名称。 代码如下: edgelist = read.csv("test.csv",header=FALSE,sep=",") g = graph.edgelist(as.matrix(edgelist),directed=FALSE) V(graph)$name <- V(graph) graph <- delete.vertices(graph, which(degree(graph) < 1)) write.graph(g,
edgelist = read.csv("test.csv",header=FALSE,sep=",")
g = graph.edgelist(as.matrix(edgelist),directed=FALSE)
V(graph)$name <- V(graph)
graph <- delete.vertices(graph, which(degree(graph) < 1))
write.graph(g, "temp.txt", "edgelist")
temp.csv:
0 4
0 5
1 4
1 6
2 5
2 6
3 7
“edgelist”格式始终为数字格式,因此不使用顶点名称。如果要保留名称,请使用其他格式,例如ncol
:
g <- graph.formula(a-b-c)
write.graph(g, format="ncol", file="test.ncol")
g2 <- read.graph("test.ncol", format="ncol")
str(g2)
# IGRAPH UN-- 3 2 --
# + attr: name (v/c)
# + edges (vertex names):
# [1] a--b b--c
相反。as.character选项对我不起作用。我找到的解决办法是:
V(graph)$id = V(graph)$name
Gabor Csardi使用
get.edgelist
和write
(我使用ncolumns=2)手动导出的另一个答案确实给了我奇怪的结果:许多边以某种方式被复制和扭曲。
我特别需要在R-igraph和Python-networkX之间进行转换
我使用的常用格式是“graphml”
我使用R导出:
write_图形(igraphNetwork,paste0(“edgelist/”,filename“.graphml”),format=“graphml”)
并使用Python导入:
G=nx.read\u图形(路径)
G=nx.relabel\u节点(G,nx.get\u节点属性(G,'name'))
当我重新导入到R时,我确保所有标签节点都匹配,并通过简单的度中心性比较进行检查,确保一切正常。我使用网状包在R和Python之间通信。edgelist格式不使用顶点名称。使用另一种格式,或手工编写,即使用
get.edgelist
查询命名的文件,然后使用write
。谢谢您的代码。我在上面示例中提供的数据上尝试了它,得到了:At rinterface.c:1225:属性不是字符,无效值我使用的是“graphml”格式,看起来它考虑了节点的名称。参见我的编辑,V(g)$name
不是字符类型,这有时会导致问题。
V(graph)$name <- V(graph)
V(graph)$name <- as.character(V(graph))
V(graph)$id = V(graph)$name