#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
Это будет работать.