2012-07-09 4 views
1

У меня есть эти векторы:Как построить взаимосвязанные ссылки с помощью igraph?

>dput(SHLRK03) 
c("CHSLSCR01", "SHLRK04", "SHLRK05", "WLLWCR01", "WLLWCR02", 
"WNBGORV01", "WNBGORV02", "WNBGORV03", "WNBGORV04", "WNBGORV05", 
"WNBGORV06") 
> dput(SHLRK04) 
"SHLRK05" 
> dput(WNBGORV01) 
c("WLLWCR02", "WNBGORV02", "WNBGORV03", "WNBGORV04", "WNBGORV05", 
"WNBGORV06") 

Я хочу, чтобы получить один участок соединения следующим образом:

  1. От SHLRK03 указывая на значения в векторе.
  2. От SHLRK04 в сюжете SHLRK03 по отношению к значениям величин в SHLRK04
  3. От WNBGORV01 жгутов SHLRk04 к значениям, в WNBGORV01

И у меня есть еще несколько значений, которые связанных друг с другом. Я попытался найти такие сюжеты при переполнении стека и сети, но не смог найти ни одного примера.

Может кто-нибудь, пожалуйста, помогите мне в этом? Я ценю ваше время и силы.

ответ

7

Один из способов сделать это - построить соответствующий adjacency matrix. Например,

vertices <- c("SHLRK03", unique(c(SHLRK03, SHLRK04, WNBGORV01))) 
adj.mat <- matrix(0, nrow=length(vertices), ncol=length(vertices), 
        dimnames=list(vertices, vertices)) 
adj.mat["SHLRK03", colnames(adj.mat) %in% SHLRK03] <- 1 
adj.mat["SHLRK04", colnames(adj.mat) %in% SHLRK04] <- 1 
adj.mat["WNBGORV01", colnames(adj.mat) %in% WNBGORV01] <- 1 
library(igraph) 
g <- graph.adjacency(adj.mat) 
V(g)$label <- V(g)$name 
plot(g) 

Существует несколько вариантов компоновки графа, маркировки вершин и т. Д., Которые вы найдете в онлайновой документации. Вот рендеринг по умолчанию с приведенным выше кодом.

enter image description here

Если у вас есть несколько векторов, как это, вы можете, конечно, автоматизировать заполнение матрицы смежности с небольшой вспомогательной функцией.