首页 > 解决方案 > 从 igraph 中的边缘列表创建对象

问题描述

我是 igraph 的新手。我将它与 R 一起使用(我也是新手)。我想稍后使用 CINNA R 包,但我正在努力将我的网络加载到 igraph/从我的文件中创建一个 igraph 对象。到目前为止我已经尝试过:

  1. ```read.graph("file", format = "graphml")
    Error in read.graph.graphml(file, ...) :
    At rinterface.c:6077 : cannot open GraphML file, File operation error```
    
  2. ```read.graph("file", format="gml")```
    

--> 然后 R 崩溃。

  1. ```read.graph("file", format="edgelist")
    Error in read.graph.edgelist(file, ...) :
    At rinterface.c:5006 : cannot read edgelist, File operation error```
    
  2. ```graph_from_edgelist("file", directed=TRUE)
    Error in graph_from_edgelist("file",  : 
    graph_from_edgelist expects a matrix with two columns```
    

有人了解我的问题并知道如何解决吗?

标签: rmatrixigraphedge-list

解决方案


您需要将文件作为数据框导入,然后您可以使用数据框创建 igraph 对象:

这是igraph的一个例子:

library(igraph)

df <- data.frame(
  A = c("Berlin", "Amsterdam", "New York") , 
  B = c("Munich", "Utrecht", "Chicago"))

df.g <- graph.data.frame(d = df, directed = FALSE)

plot(df.g, vertex.label = V(df.g)$name)

有关更多解释,您可以查看:

R 网络分析简介

要将文件作为数据框导入,您可以尝试以下操作:

links <- read.csv("Dataset1.csv", header=T, as.is=T)
# or read.table(file='Dataset1.csv')
head(links)
net <- graph_from_data_frame(d=links, vertices=nodes, directed=T) 
plot(net)

另外,看看(第 3 部分)这里:

graph_from_data_frame

要从便于 igraph 的格式创建图形,您可以使用:

# possible formats : read_graph(file, format = c(“edgelist”, “pajek”, “ncol”, “lgl”, “graphml”, “dimacs”, “graphdb”, “gml”, “dl”), …)
graph1 <- read.graph(file='your_file_name.gml',format="gml")
class(graph1)
plot(graph1)

推荐阅读