我有一个output.csv文件,其中包含图表的邻接列表。它采用以下格式..
每一行都以源节点(一个整数)开头,后跟它所连接的节点。节点通过空格(')分隔符彼此分开并与源节点分开。
快照如下所示:
0 2 5 8
1 2 7 4 6
2 0 1
3 4 7 8
4 1 3
我想把它读成邻接列表格式并用它来绘制igraph。最简单的方法是什么?感谢..
答案 0 :(得分:3)
您的数据不是一个合适的邻接列表,因为它缺少5-8的列表。所以我只是从列表中删除了这些顶点。
Igraph具有从邻接列表创建图形的功能,因此您只需读入数据,然后使用graph.adjlist
从邻接列表创建图形。这是一种方法,不一定是最简单的方法:
## magrittr for the %>% pipes
library(magrittr)
library(igraph)
## sample data
text <- "0 2\n1 2 4\n2 0 1\n3 4\n4 1 3"
## read in as lines, replace textConnection(text) with your file name
lines <- readLines(textConnection(text))
g <- lines %>%
strsplit(split = " ") %>% # 1
lapply(as.numeric) %>% # 2
lapply(extract, -1) %>% # 3
lapply(add, 1) %>% # 4
graph.adjlist(mode = "all") # 5
g
#> IGRAPH U--- 5 4 --
#> + edges:
#> [1] 1--3 2--3 2--5 4--5
长管道步骤的一些解释:
graph.adjlist
graph.adjlist
以创建无向图。