我有一个矩阵,其中包含包含igraph object
的最短路径序列的列表。
我想将此矩阵转换为igraph.es
(边沿序列)。
样本:
library(igraph)
data <- data.frame(from =c(1, 2, 3, 4, 5, 1),
to =c(4, 3, 4, 5, 6, 5),
weight=c(0.2,0.1,0.5,0.7,0.8,0.2))
g <- graph.data.frame(data, directed=FALSE)
sp <- sapply(data, function(x){shortest_paths(g, from = x, to = V(g)[x],output = "epath")})
sp
现在是一个矩阵。我们可以使用索引对其进行子集化:
x<-sp[[2]][[2]]
会将x
变成igraph::edge_sequence
。
我正在寻找一个apply
命令,将sp
的所有path_sequences转换为edge_sequences
。预先谢谢你。
编辑: 我设法取消列出列表的第一层。
sp<-flatten(sp)
所以我们只需要一个简单的索引。
我现在可以只使用for loop
吗?
像这样:
for(i in sp){ result[i]<- sum(E(g)$weight[sp[[i]])}
不幸的是,这没有给我想要的输出。