【问题标题】:Identifying vertex sequences by a criteria按标准识别顶点序列
【发布时间】:2019-09-03 11:32:58
【问题描述】:

我有一个顶点序列列表,如下所示。这是all_simple_paths 函数的输出。

vs <- list(structure(c(B = 1L, C = 3L, C1 = 4L, C2 = 5L, C3 = 6L, X = 7L), class = "igraph.vs"), 
     structure(c(B = 1L, C = 3L, C1 = 4L, C2 = 5L, C3 = 6L, X = 7L, 
                 P = 8L), class = "igraph.vs"), 
     structure(c(B = 1L, C = 3L, C1 = 4L, C2 = 5L, C3 = 6L, X = 7L, 
                 P = 8L, K1 = 19L, K2 = 20L, K3 = 21L), class = "igraph.vs"), 
     structure(c(B = 1L, C = 3L, C1 = 4L, C2 = 5L, C3 = 6L, X = 7L, 
                 P = 8L, I = 24L), class = "igraph.vs"), 
     structure(c(B = 1L, C = 3L, C1 = 4L, C2 = 5L, C3 = 6L, X = 7L, 
                 H = 23L), class = "igraph.vs"), 
     structure(c(B = 1L, I = 24L), class = "igraph.vs"))
vs
[[1]]
+ 6/? vertices, named (deleted):
[1] B  C  C1 C2 C3 X 

[[2]]
+ 7/? vertices, named (deleted):
[1] B  C  C1 C2 C3 X  P 

[[3]]
+ 10/? vertices, named (deleted):
 [1] B  C  C1 C2 C3 X  P  K1 K2 K3

[[4]]
+ 8/? vertices, named (deleted):
[1] B  C  C1 C2 C3 X  P  I 

[[5]]
+ 7/? vertices, named (deleted):
[1] B  C  C1 C2 C3 X  H 

[[6]]
+ 2/? vertices, named (deleted):
[1] B I

我想从列表vs 中仅获取那些不具有a 元素作为根和叶之间的顶点的顶点序列。

a <- c("K3", "H", "I", "N", "B", "A", "X", "P", "Y", "O", "R", "S")

如何在R 中使用igraph

我这个例子想要的输出是

out <- list(structure(c(B = 1L, C = 3L, C1 = 4L, C2 = 5L, C3 = 6L, X = 7L), class = "igraph.vs"), 
           structure(c(B = 1L, I = 24L), class = "igraph.vs"))
out
[[1]]
+ 6/? vertices, named (deleted):
[1] B  C  C1 C2 C3 X 

[[2]]
+ 2/? vertices, named (deleted):
[1] B I

【问题讨论】:

    标签: r graph igraph


    【解决方案1】:

    鉴于您的示例输入和输出,这似乎可行。首先,只需编写一个辅助函数来查看某个顶点是否包含在路径的非终端顶点中,然后使用该检测函数来过滤您感兴趣的主列表。

    does_not_contain <- function(a) {
      function(x) !any(a %in% tail(head(names(x), -1), -1))
    }
    
    Filter(does_not_contain(a), vs)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-12
      • 1970-01-01
      • 1970-01-01
      • 2015-08-01
      • 2018-03-26
      • 1970-01-01
      相关资源
      最近更新 更多