使用 igraph,如何从 Inbound/Outbound 个位置(2 列)生成边缘列表?

Using igraph, how do I generate an edge list from Inbound/Outbound locations (2 columns)?

如果能得到任何帮助,我将不胜感激。它说我们必须读入附件并将其用作边列表以创建具有加权边的有向图。

然后我还有大约 20 件其他事情要做。这是要导入的 .txt 文件的一部分:

列是入站位置、出站位置和行程时间(以分钟为单位)。

Inbound  Outbound  Minutes
ACY ATL 102
ACY FLL 136
ACY MCO 122
ACY MYR 90
ACY RSW 137
ACY TPA 129
ATL ACY 102
ATL BOS 132
ATL BWI 106
ATL CLE 104

.....以此类推,总共大概有50+个位置,大约400行

我尝试使用

read.graph(file.choose(), format="edgelist")

当我 select .txt 文件时,我收到错误:

"Error in read.graph.edgelist(file, ...) : 
  At foreign.c:101 : parsing edgelist file failed, Parse error"

-----编辑----- 我刚刚使用了以下代码:

inbound <- c(data[, 1])
outbound <- c(data[, 2])
testing <- data.frame(inbound, outbound)
gd <- graph_from_data_frame(testing, directed=TRUE,vertices=NULL)

给出了这个输出:

edges from d654854 (vertex names):
  [1] 1 ->2  1 ->18 1 ->30 1 ->35 1 ->46 1 ->58 2 ->1  2 ->7  2 ->9  2 ->11 2 ->15 2 ->16 2 ->18 2 ->21 2 ->23 2 ->24 2 ->30
 [18] 2 ->33 2 ->34 2 ->36 2 ->37 2 ->41 2 ->58 3 ->18 4 ->18 5 ->18 5 ->30 5 ->35 5 ->46 5 ->58 6 ->18 7 ->2  7 ->9  7 ->11
 [35] 7 ->15 7 ->16 7 ->18 7 ->23 7 ->30 7 ->33 7 ->34 7 ->35 7 ->37 7 ->58 8 ->18 9 ->2  9 ->7  9 ->13 9 ->15 9 ->16 9 ->18
 [52] 9 ->21 9 ->23 9 ->24 9 ->30 9 ->33 9 ->34 9 ->35 9 ->36 9 ->37 9 ->48 9 ->51 9 ->58 10->18 10->23 10->30 10->35 11->2 
 [69] 11->7  11->15 11->18 11->23 11->24 11->30 11->34 11->35 11->51 12->18 13->9  13->15 13->18 13->21 13->37 14->15 14->16
 [86] 14->18 14->21 14->23 14->24 14->26 14->30 14->33 14->37 15->2  15->7  15->9  15->11 15->13 15->14 15->16 15->18 15->23
[103] 15->24 15->26 15->30 15->33 15->34 15->35 15->36 15->37 15->41 15->42 15->43 15->48 15->52 15->58 16->2  16->7  16->9 
[120] 16->14 16->15 16->18 16->21 16->23 16->24 16->26 16->29 16->30 16->33 16->34 16->35 16->36 16->41 16->46 16->54 16->58
+ ... omitted several edges

这是我应该得到的吗?还是我还差得远?

使用 is.igraph(gd) return 为真,使用 V(gd)E(gd) 两个 return 信息。


所以我想我的问题是如何正确导入 "table" 以便将 inbound/outbound 航班名称对用作边缘(我认为)?我必须制作一个带加权边的有向图来完成设置。

关于我应该从哪里开始的任何信息?我查看了 igraph 文档,但找不到有关从 table 导入和使用字符对作为边的任何信息。

您可以将数据作为 data.frame 导入并将其强制转换为图形。一旦你有了图表,你就可以分配权重。

library(igraph)

xy <- read.table(text = "
ACY ATL 102
ACY FLL 136
ACY MCO 122
ACY MYR 90
ACY RSW 137
ACY TPA 129
ATL ACY 102
ATL BOS 132
ATL BWI 106
ATL CLE 104", header = FALSE, sep = " ")
colnames(xy) <- c("node1", "node2", "weight")

g <- graph_from_data_frame(xy[, c("node1", "node2")])
E(g)$weight <- xy$weight

plot(g, edge.width = E(g)$weight/50, edge.arrow.size = 0.1)