【问题标题】:Conditional removing of vertices based on attributes in r基于 r 中的属性有条件地删除顶点
【发布时间】:2015-04-21 22:11:40
【问题描述】:

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

  1. degree(my.graph)==0
  2. 顶点名称以指定字符开头。

这是一个显示我想要得到的示例。来自下图:

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

我想删除以 5 开头的度数为 0 的顶点。在这种情况下,我只想删除顶点 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])

它不起作用,我取回了完整的图表。有没有特殊的方法可以组合多个条件去除顶点?

谢谢!

【问题讨论】:

  • 使用&amp;,而不是&amp;&amp;。 (差异见?Logic帮助页面)
  • 我也想通了。我为 and 使用了错误的运算符。谢谢!
  • 所以,当你只用&amp; 而不是&amp;&amp; 绘制它时,你会得到你想要的吗?对我来说,图中留下了 490,我认为你想去掉 490,因为它的度数为 0。
  • 我只想删除同时满足这两个条件的那些节点,即 490 应该因为名称而保留。 &amp; 正是这样做的。

标签: r igraph sna


【解决方案1】:

我相信这就是你想要的:

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

pozdrawiam :)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-13
    • 1970-01-01
    • 2015-08-31
    • 2021-06-09
    • 2019-12-03
    • 2017-09-22
    • 1970-01-01
    • 2021-12-28
    相关资源
    最近更新 更多