在列表矩阵上应用索引命令

时间:2019-07-09 12:33:55

标签: r list subset apply igraph

我有一个矩阵,其中包含包含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]])}

不幸的是,这没有给我想要的输出。

0 个答案:

没有答案