r - 编写图形并保留顶点名称

标签 r igraph vegan network-analysis

我正在尝试创建一个图形,然后使用函数 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")

得到下图: enter image description here

名字丢失了!

不过,如果我使用不同格式的相同函数:

write.graph(gg_mst, "graph.txt", format="ncol")

我获得了一个保存行名的文件:

dune1 dune3 0.448275862068966
dune2 dune3 0.341463414634146
dune2 dune10 0.294117647058824
dune3 dune4 0.270588235294118
...   ...   ...

是否与使用格式为“pajek”的write.graph有关的错误?

最佳答案

您需要分配顶点的 id 属性,以便能够在 pajek 查看器中显示顶点的名称,例如这个 http://vlado.fmf.uni-lj.si/pub%20/networks/pajek/default.htm或盖菲。需要像下面这样修改几行代码:

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 打开会正确显示顶点 ID。

enter image description here

关于r - 编写图形并保留顶点名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41102691/

相关文章:

r - igraph从-到值(value)获取优势

r - 如何在 R 中绘制无向连通图?

r - `geom_line()`连接映射到不同组的点

r - 邻近矩阵 - 随机森林,R

ubuntu - 在 Ubuntu 17.04 中安装 igraph 时出现问题

r - metaMDS {vegan} 距离而不是社区矩阵

r - 用 ordiplot3d 标记单个点?

r - 如何解释cca素食主义者的输出

R - 根据匹配的名称逐个元素组合任意列表

r - 如何将间隙插入时间序列中,以使结果时间序列中没有间隙?