2015-01-06 2 views
1

Пробовал создавать пустой граф и добавлять ребра и вершины.добавление ребер и вершин без дублирования в igraph (R)

library(igraph) 
g<-graph(edges =,NULL,n=NULL,directed =FALSE) 
g=g+vertices("5","6") 
g=g+edge("5","6") 

However when I try to do 
g=g+vertices("5") 

он дублирует узел «5».

Как сохранить узлы и вершины, которые должны быть уникальными. , так что g = g + вершины ("5") ничего не добавят.

ответ

3

Я не думаю, что есть некоторые встроенные функции в igraph, однако вы можете легко создать, чтобы использовать вместо g + vertices(...): использование

addVertIfNotPresent <- function(g, ...){ 
    names2add <- setdiff(list(...),V(g)$name) 
    v2add <- do.call(vertices,names2add) 
    g <- g + v2add 
} 

Пример:

library(igraph) 

g <- graph(edges=NULL,n=NULL,directed=FALSE) 
g = addVertIfNotPresent(g,"5","6") 
g = g + edge("5","6") 

# "5","6" won't be added and "7" will be added just once 
g=addVertIfNotPresent(g,"5","6","7","7") 

plot(g) 

enter image description here

Смежные вопросы