【问题标题】:Delete selected short paths from a graph in igraph从 igraph 中的图中删除选定的短路径
【发布时间】:2018-11-14 16:24:22
【问题描述】:

尊敬的社区成员:

我想问是否有办法选择要在 igraph 上绘制哪些节点。我正在运行以下代码:

library(igraph)
    g <- graph.adjacency(
  as.matrix(as.dist(cor(t(POS_testing), method="pearson"))),
  mode="undirected",
  weighted=TRUE,
  diag=FALSE
)
g <- simplify(g, remove.multiple=TRUE, remove.loops=TRUE)
g <- delete_edges(g, E(g)[which(E(g)$weight<0.9)])

查看我的顶点:

V(g)$comp <- components(g)$membership
V(g)$comp
[1]  1  2  3  4  3  5  6  7  3  8  9 10 11 12 13 14 15 16  3  3  3 17 18 19 20 15  3 21  3
[30]  3  3  3 22 23  3  3  3  3 24 25  3 26 27 28  3 29  3  3  3 30 31  3  3  3  3  3  3 32
[59]  3 33  3  3 34 35  3  3 28 28 36 37 38  3 39 28  3  3  3  3 40 21 21  3 41  3  3 42  3
[88]  3  3  3  3  3 43 44  3 45  3 46  3 47 48  3  3  3  3  3  3 49  3  3  3  3 50  3  3  3
[117]  3 51  3  3 52 53 52 52 54 55 52  3 56 57 58 55 59  3 60 61  3 62  3 63 64 65 66 67  3
[146]  3  3  3 68  3 69 64 70 71  3 72  3 73 74  3  3 75  3  3  3  3 32 76  3 77  3 78  3  3
[175] 79 80  3 81 82  3  3 73  3  3  3 83 84 85 73  3  3  3  3  3 86 32 87

现在,运行我在这里找到的这个命令:Delete unconnected short paths from a graph in igraph 我可以获得分配给数字“3”的顶点。

g <- induced_subgraph(g, V(g)$comp == 3)
V(g)$comp
[1] 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
[45] 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
[89] 3 3 3 3 3 3 3 3

但是,我想选择的不仅仅是分配给 3 的顶点。我想选择显示 3、21、28、32、52 和 73。

我遇到了这个网站:http://igraph.org/r/doc/delete_vertices.html 所以,我运行了代码:

t <- delete_vertices(g, comps$Var1) 

其中 comps$Var1 是我要删除的所有数字(如上所示)的数字向量(即 1、2、4、5 等)。它不起作用。当我运行V(t)$comp 时,我仍然会弹出所有 197 个数字。

接下来我尝试手动填写并运行以下代码(3 次出现 96 次,21 次出现 3 次等):

V(g)$comp <- c(rep(3, 96), rep(21, 3), rep(28, 4), rep(32, 3), rep(52, 4), rep(73, 3)). 

这也不起作用。

接下来我尝试添加_edges(只是这些看看它是否有效):

t <- add_edges(g, c(which(V(g)$comp == 3), which(V(g)$comp == 21), which(V(g)$comp == 28)))

这仍然产生了上面的所有数字,并且没有选择性地选择这些数字供我绘制。

我也尝试过像这样使用 & 运算符:

g <- induced_subgraph(g, c(V(g)$comp == 3 & V(g)$comp == 21 & V(g)$comp ==29))

这也保留了我所有的顶点。

我没有想法,我正在询问这个社区是否有可能。非常感谢您的帮助。

【问题讨论】:

    标签: r igraph vertices subgraph


    【解决方案1】:

    我们需要POS_testing 来重现您的示例,但请尝试:

    g &lt;- induced_subgraph(g, V(g)$comp %in% c(3, 21, 28, 32, 52, 73))

    【讨论】:

    • ANG - 你是个真正的天才。非常感谢你!是的!!这解决了它。由于我的声誉低下,我无法点击“向上”,但请知道我真诚地感谢这一点! :-)
    • 不客气@Purrsia!不要担心Upvote,您可以接受SO社区的答案:-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-30
    • 2020-07-31
    相关资源
    最近更新 更多