Я пытаюсь просмотреть сеть igraph с неподключенными узлами в gephi с помощью команды igraph.to.gexf, однако она выдает ошибку из-за неподключенных узлов:
Ошибка в .parseNodesVizAtt (узлы VizAtt, узлы):
Недостаточное количество строк "nodeVizAtt": цвет atts (55 строк), размер (55)
У каждого атрибута должно быть то же количество строк, что и у узлов (37)
Кто-то поместил здесь решение для bitbucket несколько лет назад:
https://bitbucket.org/gvegayon/rgexf/pull-requests/3/igraphtorgexf-with-disconnected-nodes/diff
но это не работает - как автор этого поста сказал, что есть проблема с источником и целью краев, не указанными, но они никогда не обновлялись. У кого-нибудь есть альтернативное решение?
Пример кода приведен ниже
PubID <- c("169759","174843","174843","174843","174843","174843","171051","171051","171051","171719","171719","171719","169759","173847","173847","177427")
Author <- c("ZJ","RA","DJ","JP","GS","Tv","MC","JR","CW","PB","MD","FO","FO","RA","DJ","KS")
dt <- data.frame(Author,PubID)
dt %>%
mutate(author_id = as.integer(Author)) -> dt
dt %>%
inner_join(dt, by = "PubID") %>%
filter(author_id.x < author_id.y) %>%
count(Author.x, Author.y) %>%
graph_from_data_frame(directed = FALSE) -> g1
(rest <- setdiff(Author, V(g1)$name))
g1 <- add.vertices(g1, length(rest), attr = list(name = rest))
plot(g1)
g1.gexf <- igraph.to.gexf(g1)
f <- file("J:/graph.gexf")
writeLines(g1.gexf$graph, con = f)
close(f)
Использование стандартного igraph.to.gexf удаляет мой неподключенный узел (KS) в этой версии (или выдает сообщение об ошибке в моем реальном файле), а использование модифицированного кода bitbucket теряет все исходные и целевые объекты для краев.