我正在尝试创建一个图,然后用函数write.graph (package igraph)编写它。因此,我创建了距离矩阵。
require(vegan)
data(dune)
dis <- vegdist(dune)然后我显式地定义行名:
x <- c("dune1")
for (i in 1: 20){
n <- paste("dune", i, sep="")
x <- append(x, n)
}
rownames(dune) <- x通过下面的过程,我通过最小生成树算法创建了一个无向图。
gg <- graph.adjacency(as.matrix(dis), weighted=TRUE)
gg_mst <- as.undirected(mst(gg))在这一点上,我想用pajek来表示它。为了做到这一点,我使用了write.graph:
write.graph(gg_mst, "graph.net", format="pajek")获得以下图表:

名字不见了!
然而,如果我使用不同的格式使用相同的函数:
write.graph(gg_mst, "graph.txt", format="ncol")我获得一个保存行名的文件:
dune1 dune3 0.448275862068966
dune2 dune3 0.341463414634146
dune2 dune10 0.294117647058824
dune3 dune4 0.270588235294118
... ... ...这是一个与使用write.graph格式"pajek“有关的bug吗?
发布于 2016-12-13 19:17:54
您需要分配顶点的id属性,这样才能在pajek查看器中显示顶点的名称,比如这个http://vlado.fmf.uni-lj.si/pub%20/networks/pajek/default.htm或gephi。需要修改代码的几行代码,如下所示:
dis <- vegdist(dune)
x <- c()
for (i in 1: 20){
n <- paste("dune", i, sep="")
x <- append(x, n)
}
gg <- graph.adjacency(as.matrix(dis), weighted=TRUE)
gg_mst <- as.undirected(mst(gg))
V(gg_mst)$id <- x # assign the ids
write.graph(gg_mst, "graph.net", format="pajek")使用pajek开头正确显示顶点ids。

https://stackoverflow.com/questions/41102691
复制相似问题