如何解决使用与 igraph.vs 对象列表的长度一样多的 for 循环来创建具有它们包含的名称的数据帧
我有下面的节点和边数据框,然后我创建了一个图形对象 gph
。之后,我创建了一个名为 igraph.vs
的 asp
对象列表,其中包含所有简单路径。然后我希望能够使用 for
循环来创建与列表长度一样多的数据帧,其中包含每个 igraph.vs
对象的名称。
name<-c("Robert Zero","Amy Adams","Barry Beane","Henry Handler","Julie Jones","Charlie Cheese","Karen Klein","Lolly Landswright","Imogene Isler","David Dufresne","Frank Flaherty","Egbert English","George Graham","Molly McKee","norman Needle","Oscar Oliver","Peter Platteville","Quincy Quebec","Roger Rabbit","Steve Sweet","Tom Thompson","Victor Valentino","Ulrich Uxbridge" )
label<-c("Robert Zero","Ulrich Uxbridge" )
nodes<-data.frame(name,label)
from<-c("Robert Zero","Robert Zero","Ulrich Uxbridge","Tom Thompson" )
to<-c( "Amy Adams","Roger Rabbit" )
edges<-data.frame(from,to)
#Combine them in order to create the graph object
library(igraph)
gph <- graph_from_data_frame(edges,directed=TRUE,vertices=nodes)
#Create the simple paths asp
asp <- all_simple_paths(gph,"Robert Zero")
anodes<-data.frame()
for(i in 1 :length(asp)){
anodes[i]<-data.frame(names(asp[[i]]))
colnames(anodes)<-"id"
anodes$label<-nodes$id
}
第一个结果示例
id label
1 Steve Sweet Steve Sweet
2 Tom Thompson Tom Thompson
3 Roger Rabbit Roger Rabbit
4 Robert Zero Robert Zero
解决方法
你的意思是这样吗?
lapply(
asp,function(p) {
data.frame(
id = seq_along(p),label = p$label
)
}
)
这样
[[1]]
id label
1 1 Steve Sweet
2 2 Tom Thompson
3 3 Roger Rabbit
4 4 Robert Zero
[[2]]
id label
1 1 Steve Sweet
2 2 Tom Thompson
3 3 Victor Valentino
4 4 Robert Zero
[[3]]
id label
1 1 Steve Sweet
2 2 Ulrich Uxbridge
3 3 Barry Beane
4 4 Henry Handler
5 5 Robert Zero
[[4]]
id label
1 1 Steve Sweet
2 2 Ulrich Uxbridge
3 3 Barry Beane
4 4 Charlie Cheese
5 5 Robert Zero
[[5]]
id label
1 1 Steve Sweet
2 2 Ulrich Uxbridge
3 3 Barry Beane
4 4 Imogene Isler
5 5 Robert Zero
[[6]]
id label
1 1 Steve Sweet
2 2 Ulrich Uxbridge
3 3 Barry Beane
4 4 Peter Platteville
5 5 Robert Zero
[[7]]
id label
1 1 Steve Sweet
2 2 Ulrich Uxbridge
3 3 Barry Beane
4 4 Roger Rabbit
5 5 Robert Zero
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。