преобразовать список смежности SQL в матрицу смежности R - PullRequest
1 голос
/ 14 июня 2011

У меня есть таблица 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's igraph (если нет чего-то более подходящего) для отображения направленного DAG моих родословных с узлами-предками, встречающимися над дочерними узлами.Мне неясно, что именно igraph нужно для этого.Я думаю, что мне нужно сгенерировать матрицу смежности из моего списка смежности, но я не знаю, как это сделать эффективно.

Идеи?

1 Ответ

1 голос
/ 16 июня 2011

Рассмотрите возможность использования списка ребер. Матрица из двух столбцов с каждым ребром в виде строки в матрице. igraph также будет извлекать имена узлов из значений в списке ребер.

g <- graph.edgelist(el)

А если вам нужна матрица смежности по какой-то причине

adj.mat <- get.adjacency(g)
...