последовательности вершин из igraph

#list #graph #igraph

#Список #График #igraph

Вопрос:

Я извлек все кратчайшие пути с помощью igraph и сохранил его в файле списка (с именем best). Сначала все узлы были числами, и я добавил к ним символы генов. результаты:

 library(igraph)
adjacency <- structure(list(source = structure(c(3L, 5L, 1L, 3L, 2L, 4L), 
  .Label = c("ANXA7", "CAV1", "FLNA", "GRB7", "PRKCA"), class = "factor"), 
  Target = structure(c(5L, 2L, 1L, 3L, 4L, 1L), 
  .Label = c("A1BG", "ANXA7", "CAV1", "GRB7", "PRKCA"), class = "factor")), 
  .Names = c("source", "Target"), 
  class = "data.frame",row.names = c(NA, -6L)) 

graph <- graph.data.frame(adjacency, directed = FALSE)

graph
# IGRAPH UN-- 6 6 -- 
#   attr: name (v/c)
plot(graph)
  

Затем получение кратчайших путей:

 rest <- best <- list()
rest[[1]] <- get.all.shortest.paths(graph, 1, 3, mode = c("all"))$res
names <- V(graph)
best <- lapply(rest[[1]], function(rest) { names[rest]})
  

Затем

 [[1]]
Vertex sequence:
[1] "FLNA"  "PRKCA" "ANXA7"
  

также вам может потребоваться вывод dput и unlist:

 dput(best)
list(list(structure(c(1, 2, 3), class = "igraph.es", env = <environment>)))

unlist(best[[1]])
[1] 1 2 3
  

Но мне нужно просто извлечь / подсчитать имена узлов. Также важен порядок.

 names(best[[1]])
NULL     # I need to just list the names
length(best)
[1] 1   # number of shortest paths
> length(best[[1]])
[1] 1 # I need to count nodes in each shortest path
  

Спасибо

Комментарии:

1. Этот код генерирует ошибку: Error in `[.igraph.vs`(names, rest) : invalid indexing of vertex seq

2. Я проверил и пересмотрел его. Спасибо

Ответ №1:

Просто замените этот код (имена<-V(график)) на :

 names<-V(graph)$name
  

Это будет работать.