根据r中的属性条件删除顶点

时间:2015-04-21 22:11:41

标签: r igraph sna

我正在处理一个包含121个顶点和209个边的图,我试图从这个图中删除满足两个条件的顶点:

  1. degree(my.graph)==0
  2. 顶点的名称以指定的字符开头。
  3. 这是一个显示我想要的内容的示例。从下图中可以看出:

    toy.graph <- graph.formula(121-221,121-345,121-587,345-587,221-587, 490, 588)
    

    我想删除0级以5开头的顶点。在这种情况下,我想只删除顶点588(但不是490和587)。我知道如何从5开始删除顶点:

    delete.vertices(toy.graph,V(toy.graph)$name 
                    %in% grep("^5",V(toy.graph)$name,value=T))
    

    以及如何删除度数为0的顶点:

    delete.vertices(toy.graph, V(toy.graph)[degree(toy.graph)==0])
    

    但是当我尝试将这两个条件放在一起时,那就是

    delete.vertices(toy.graph, V(toy.graph)$name %in%     
                    grep("^5",V(toy.graph)$name,value=T) 
                    && V(toy.graph)[degree(toy.graph)==0])
    

    它不起作用,我回到完整的图表。有没有一种特殊的方法来组合删除顶点的多个条件?

    谢谢!

1 个答案:

答案 0 :(得分:6)

我相信这就是你想要的:

delete.vertices(toy.graph, 
            V(toy.graph)[ degree(toy.graph) == 0 &
                            grepl("^5", V(toy.graph)$name) ] )

pozdrawiam:)