【问题标题】:Selecting clusters based on number of nodes iGraph/R根据节点数 iGraph/R 选择集群
【发布时间】:2018-10-18 08:51:53
【问题描述】:

有没有办法选择集群具有最大顶点数的子图/子集?

基本上我想做这样的事情:

want <- components(X)$csize < 20  

我考虑过将集群 ID 从图形数据帧合并到节点 df,然后使用计数或类似的东西来对原始 df 进行子集化并再次计算图形数据帧。

【问题讨论】:

  • 现在我只能回答“是”。对明显的后续问题“如何?”的回答需要一个可重现的例子。如果您能提供一份,我将不胜感激。请参考此常见问题解答:stackoverflow.com/a/5963610/1412059
  • 欢迎来到 Stack Overflow!除了函数名为components(不是component)这一事实之外,您的代码行应该可以正常工作。您的代码还没有做什么?
  • 以上代码返回一个逻辑。我想通了我认为:X[X$csize

标签: r igraph graph-theory sna


【解决方案1】:

这是一个使用随机图的潜在解决方案。您需要在components 上使用groups 来识别哪些节点 属于哪些组件,然后您需要使用length 来识别有多大组件是:

set.seed(4321)
g <- sample_gnm(100, 40, F, F)
plot(g, vertex.size = 5, vertex.label = '')

want <- g %>%
  components %>%
  groups %>%
  .[sapply(., length) > 3]

want 将提供以下信息:

$`1`
[1]  1 34 38 45 75

$`3`
 [1]   3  12  24  39  50  54  58  60  67  84  97  99 100

$`5`
[1]  5 35 37 41 44 53 65 90

然后你可以删除所有未包含在want中的节点

newG <- g %>%
  {. - V(.)[! as.numeric(V(.)) %in% unlist(want)]}

plot(newG, vertex.size = 5, vertex.label = '')

【讨论】:

    猜你喜欢
    • 2021-12-01
    • 2017-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多