Ошибка в первой функции ширины пакета ggm: Ошибка в if (посещения [y] == 0) {: пропущенное значение там, где требуется ИСТИНА / ЛОЖЬ - PullRequest
0 голосов
/ 04 июля 2019

У меня есть список графиков с циклами, которые я хотел бы удалить. Для этого я использую поиск в ширину с помощью функции bfsearch в пакете ggm. Раньше это работало хорошо, но теперь я получаю ошибку для некоторых моих графиков. Сообщение об ошибке: «Ошибка в том, если (посещено [у] == 0) {: пропущено значение, где требуется ИСТИНА / ЛОЖЬ». Алгоритм, похоже, застрял, потому что он не посетил все узлы, но он не может достичь всех узлов.

library(slam) # I store the adjacency matrix as sparse because this saves a lot of space
library(ggm)

adjacency_matrix <- read_stm_CLUTO("https://pastebin.com/raw/BBgWypfz")
bfsearch_ggm <- bfsearch(as.matrix(adjacency_matrix))
Error in if (visited[y] == 0) { : missing value where TRUE/FALSE needed

Однако, когда я изучаю график с помощью igraph, я не нахожу несвязанных частей. Кроме того, функция igraph в ширину не дает ошибок. Остальная часть моего кода написана для использования результата ggm, так как в прошлом были проблемы с большими графами с функцией igraph.

is.connected(
  graph_from_adjacency_matrix(as.matrix(adjacency_matrix))
  )
[1] TRUE
bfsearch_igraph <- bfs(
  graph_from_adjacency_matrix(
    as.matrix(adjacency_matrix)
  ),
  root = 1)

Это ошибка в функции ggm bfsearch? Или что-то не так с моей матрицей смежности?

...