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

对 from 参数中的多个名称运行 all_simple_paths()

如何解决对 from 参数中的多个名称运行 all_simple_paths()

我有下面的节点和边数据集,我想知道我是否可以一次运行多个名称的简单路径函数,而不是一次运行一个

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)
    library(dplyr)
    
    gph <- graph_from_data_frame(edges,directed=TRUE,vertices=nodes)
    
    #Create the simple paths asp 
    asp <- all_simple_paths(gph,"Robert Zero")
    asp2 <- all_simple_paths(gph,"Amy Adamas","Robert Zero")

相反,我想要类似的东西:

asp <- all_simple_paths(gph,c("Steve Sweet","Amy Adams"),"Robert Zero")

这会立即给我 12 条路径

解决方法

sapply试试all_simple_paths

asp <- unlist(
  sapply(
    c("Steve Sweet","Amy Adams"),all_simple_paths,graph = gph,to = "Robert Zero"
  ),recursive = FALSE
)

给出

> asp
$`Steve Sweet1`
+ 4/23 vertices,named,from 6674620:
[1] Steve Sweet  Tom Thompson Roger Rabbit Robert Zero

$`Steve Sweet2`
+ 4/23 vertices,from 6674620:
[1] Steve Sweet      Tom Thompson     Victor Valentino Robert Zero

$`Steve Sweet3`
+ 5/23 vertices,from 6674620:
[1] Steve Sweet     Ulrich Uxbridge Barry Beane     Henry Handler
[5] Robert Zero

$`Steve Sweet4`
+ 5/23 vertices,from 6674620:
[1] Steve Sweet     Ulrich Uxbridge Barry Beane     Charlie Cheese
[5] Robert Zero

$`Steve Sweet5`
+ 5/23 vertices,from 6674620:
[1] Steve Sweet     Ulrich Uxbridge Barry Beane     Imogene Isler
[5] Robert Zero

$`Steve Sweet6`
+ 5/23 vertices,from 6674620:
[1] Steve Sweet       Ulrich Uxbridge   Barry Beane       Peter Platteville
[5] Robert Zero

$`Steve Sweet7`
+ 5/23 vertices,from 6674620:
[1] Steve Sweet     Ulrich Uxbridge Barry Beane     Roger Rabbit
[5] Robert Zero

$`Amy Adams1`
+ 4/23 vertices,from 6674620:
[1] Amy Adams     Barry Beane   Henry Handler Robert Zero

$`Amy Adams2`
+ 4/23 vertices,from 6674620:
[1] Amy Adams      Barry Beane    Charlie Cheese Robert Zero

$`Amy Adams3`
+ 4/23 vertices,from 6674620:
[1] Amy Adams     Barry Beane   Imogene Isler Robert Zero

$`Amy Adams4`
+ 4/23 vertices,from 6674620:
[1] Amy Adams         Barry Beane       Peter Platteville Robert Zero

$`Amy Adams5`
+ 4/23 vertices,from 6674620:
[1] Amy Adams    Barry Beane  Roger Rabbit Robert Zero

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。