使用与 igraph.vs 对象列表长度一样多的 for 循环来创建具有它们包含的名称的数据帧
Use a for loop as many times as the length of a list of igraph.vs objects to create dataframes with the names they include
我在下面有节点和边数据框,然后我创建了一个图形对象 gph
。之后,我创建了一个名为 asp
的 igraph.vs
对象列表,其中包含所有简单路径。然后我希望能够使用 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", "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" )
nodes<-data.frame(name,label)
from<-c("Robert Zero", "Amy Adams", "Barry Beane", "Barry Beane", "Barry Beane",
"Julie Jones", "Karen Klein", "Imogene Isler", "David Dufresne", "Frank Flaherty",
"Egbert English", "George Graham", "Molly McKee", "Molly McKee", "Amy Adams",
"Peter Platteville", "Amy Adams", "Roger Rabbit", "Julie Jones", "Robert Zero",
"Steve Sweet", "Tom Thompson", "Steve Sweet", "Ulrich Uxbridge", "Henry Handler",
"Barry Beane", "Barry Beane", "Charlie Cheese", "Barry Beane", "Victor Valentino",
"Tom Thompson" )
to<-c( "Amy Adams", "Barry Beane", "Henry Handler", "Julie Jones", "Charlie Cheese",
"Karen Klein", "Lolly Landswright", "Robert Zero", "Frank Flaherty", "Robert Zero",
"George Graham", "Robert Zero", "Norman Needle", "Julie Jones", "Oscar Oliver",
"Robert Zero", "Quincy Quebec", "Robert Zero", "Molly McKee", "Steve Sweet",
"Tom Thompson", "Victor Valentino", "Ulrich Uxbridge", "Barry Beane", "Robert Zero",
"Imogene Isler", "Peter Platteville", "Robert Zero", "Roger Rabbit", "Robert Zero",
"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, "Steve Sweet", "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
我在下面有节点和边数据框,然后我创建了一个图形对象 gph
。之后,我创建了一个名为 asp
的 igraph.vs
对象列表,其中包含所有简单路径。然后我希望能够使用 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", "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" )
nodes<-data.frame(name,label)
from<-c("Robert Zero", "Amy Adams", "Barry Beane", "Barry Beane", "Barry Beane",
"Julie Jones", "Karen Klein", "Imogene Isler", "David Dufresne", "Frank Flaherty",
"Egbert English", "George Graham", "Molly McKee", "Molly McKee", "Amy Adams",
"Peter Platteville", "Amy Adams", "Roger Rabbit", "Julie Jones", "Robert Zero",
"Steve Sweet", "Tom Thompson", "Steve Sweet", "Ulrich Uxbridge", "Henry Handler",
"Barry Beane", "Barry Beane", "Charlie Cheese", "Barry Beane", "Victor Valentino",
"Tom Thompson" )
to<-c( "Amy Adams", "Barry Beane", "Henry Handler", "Julie Jones", "Charlie Cheese",
"Karen Klein", "Lolly Landswright", "Robert Zero", "Frank Flaherty", "Robert Zero",
"George Graham", "Robert Zero", "Norman Needle", "Julie Jones", "Oscar Oliver",
"Robert Zero", "Quincy Quebec", "Robert Zero", "Molly McKee", "Steve Sweet",
"Tom Thompson", "Victor Valentino", "Ulrich Uxbridge", "Barry Beane", "Robert Zero",
"Imogene Isler", "Peter Platteville", "Robert Zero", "Roger Rabbit", "Robert Zero",
"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, "Steve Sweet", "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