Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 将图形写入文件不保留顶点名称_R_Igraph - Fatal编程技术网

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