将SQL邻接列表转换为R邻接矩阵

时间:2011-06-14 14:56:45

标签: r data-structures adjacency-list adjacency-matrix

我有一个MySQL表pedigree,它将我所有的互连父母数据存储为2个邻接列表:

谱系表

org_id INT UNSIGNED NOT NULL PRIMARY KEY,
dam_id INT UNSIGNED,
sire_id INT UNSIGNED,
FOREIGN KEY (org_id) REFERENCES organisms(org_id)
FOREIGN KEY (dam_id) REFERENCES organisms(org_id),
FOREIGN KEY (sire_id) REFERENCES organisms(org_id)
  • 任何org_id可能有也可能没有孩子。孩子的数量是无限的。
  • org_id表中的每个pedigree都必须至少有一个dam_id或一个sire_id
  • 如果org_id没有父母,除了作为父亲或大坝之外,它不会列在谱系表中
  • org_id可能有dam_id==sire_id

样本数据

Org Dam Sire
23, 42, 57
26, 25, 25
27, 43, 43
28, 44, 44
30, 25, 25
31, 45, 25
32, 45, 45
33, 31, 32
34, 28, 59
35, 27, 28
36, 28, 28
39, 38, 34
41, 27, 24

我想使用R的igraph包(除非有更合适的东西)来显示我的谱系的有向DAG,其中祖先节点出现在子节点之上。我不清楚igraph需要做什么。我想我需要从我的邻接列表中生成一个邻接矩阵,但我对如何有效地做这件事感到茫然。

想法?

1 个答案:

答案 0 :(得分:1)

考虑使用边缘列表。两列矩阵,每条边作为矩阵中的一行。 igraph也会从边缘列表中的值中提取节点的名称。

g <- graph.edgelist(el)

如果由于某种原因需要邻接矩阵

adj.mat <- get.adjacency(g)
相关问题