微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用与 igraph.vs 对象列表的长度一样多的 for 循环来创建具有它们包含的名称的数据帧

如何解决使用与 igraph.vs 对象列表的长度一样多的 for 循环来创建具有它们包含的名称的数据帧

我有下面的节点和边数据框,然后我创建了一个图形对象 gph。之后,我创建了一个名为 igraph.vsasp 对象列表,其中包含所有简单路径。然后我希望能够使用 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 举报,一经查实,本站将立刻删除。