微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

R 和 igraph:删除两个值之间权重的边

如何解决R 和 igraph:删除两个值之间权重的边

这是一个愚蠢的问题,但我们在这里我有一个互相关矩阵,如下所示:

> dput(cmat2)
structure(c(0,1,0.892305552010683,0.683880877230643,0.82509656411663,0.666360444688385,0.825096563824574,0.692861822147646,0.838251810637771,0.698923895580299,0.838251810387625,0.619756696903943,0.511941092682266,0.619756697865856,0.631621405554924,0.999999999999996,0.631621406119761,1),.Dim = c(10L,10L))

我用它作为图表的权重:

graph <- graph.adjacency(as.matrix(cmat),weighted = TRUE)

现在,我的目的是只选择权重介于 -0.15 和 0.65 之间的边。 虽然我可以选择两个选项之一(高于 0.65 或高于 -0.15),但不能同时选择。我试过了:

graph <- delete.edges(graph,which(E(graph)$weight > -0.15) & which(E(graph)$weight <0.65))

但这会导致无限加载,当尝试使用 ggraph

显示图表时

干杯

解决方法

您可以尝试以下任一方法:

graph_from_data_frame(
    subset(
        get.data.frame(graph),!(weight > -0.15 & weight < 0.65)
    )
)

delete.edges(
    graph,E(graph)[E(graph)$weight > -0.15 & E(graph)$weight < 0.65]
)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。