如何在 igraph R 中的图组件之间添加边

2023-12-27

我有一个图表包含4 components。现在,我想在其中添加一个优势all components基于size of the membership.

例如,下图包含4 components.

首先,我将连接all components with only one edge and take the edge randomly。我可以使用这段代码来做到这一点

graph1 <- graph_from_data_frame(g, directed = FALSE)
E(graph1)$weight <- g$new_ssp
cl <- components(graph1)

graph2 <- with(
  stack(membership(cl)),
  add.edges(
    graph1,
    c(combn(sapply(split(ind, values), sample, size = 1), 2)),
    weight = runif(choose(cl$no, 2))
  )
)

其次,现在我想在之间添加一条边component-1 and component-2。我想在之间添加一条边2 components but rest of the component will be present in the new graph from the previous graph.

就像,在之间添加一条边之后component-1 and component-2,新图将包含3 component 1st (component-1 and component-2 as a 1 component because we added 1 edge), 2nd (component-3 from the main graph), and 3rd (component-4 from the main graph)。我可以使用这段代码来做到这一点

dg <- decompose.graph(graph1)
graph3 <- (dg[[1]] %u% dg[[2]])

component_subgraph_1 <- components(graph3)

graph2 <- with(
  stack(membership(component_subgraph_1)),
  add.edges(
    graph1,
    c(combn(sapply(split(ind, values), sample, size = 1), 2)),
    weight = 0.01))

Figure: enter image description here

所有组合都相同。例如,component-1 and component-3, and component-1 and component-4, and component-2 and component-3, and component-2 and component-4, and component-3 and component-4.

但是,手动编写代码并更改是不可行的dg[[1]], dg[[2]], 等等。此外,我的实际数据集包含很多组件。所以,实际上,这是不可能的。 知道吗,我怎样才能自动执行此操作?

实际上,我有一个评分函数(如最短路径)。所以我想检查一下分数adding all components, or after adding only 2 components, after adding only 3 components, and so on!就像是greedy algorithms.

可重现的数据:

g <- structure(list(query = structure(c(1L, 1L, 1L, 2L, 2L, 3L, 4L, 
                                   5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L), .Label = c("ID_00104", 
                                                                                                       "ID_00136", "ID_00169", "ID_00178", "ID_00180"), class = "factor"), 
               target = structure(c(16L, 19L, 20L, 1L, 9L, 9L, 6L, 11L, 
                                    13L, 15L, 4L, 8L, 10L, 14L, 2L, 3L, 5L, 7L, 12L, 17L, 18L
               ), .Label = c("ID_00169", "ID_00288", "ID_00324", "ID_00394", 
                             "ID_00663", "ID_00790", "ID_00846", "ID_00860", "ID_00910", "ID_00959", 
                             "ID_01013", "ID_01047", "ID_01130", "ID_01222", "ID_01260", "ID_06663", 
                             "ID_06781", "ID_06786", "ID_06791", "ID_09099"), class = "factor"), 
               new_ssp = c(0.654172560113154, 0.919096895578551, 0.925821596244131, 
                           0.860406091370558, 0.746376811594203, 0.767195767195767, 
                           0.830379746835443, 0.661577608142494, 0.707520891364902, 
                           0.908193484698914, 0.657118786857624, 0.687664041994751, 
                           0.68586387434555, 0.874513618677043, 0.836646499567848, 0.618361836183618, 
                           0.684163701067616, 0.914728682170543, 0.876297577854671, 
                           0.732707087959009, 0.773116438356164)), row.names = c(NA, 
                                                                                 -21L), class = "data.frame")

提前致谢。


实际上你已经接近你想要的了。也许下面的代码可以帮助你

out <- with(
  stack(membership(cl)),
  lapply(
    combn(split(ind, values), 2, simplify = FALSE),
    function(x) {
      add.edges(
        graph1,
        c(combn(sapply(x, sample, size = 1), 2)),
        weight = 0.01
      )
    }
  )
)

然后你可以运行

sapply(out, plot)

可视化所有组合。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 igraph R 中的图组件之间添加边 的相关文章

  • 使用 pracma::findpeaks 识别持续峰值

    我的语法有问题peakpat内的选项findpeaks内的函数pramcaR 包 v 2 1 1 我使用的是 R 3 4 3 x64 Windows 我希望该函数能够识别可能有两个重复值的峰值 并且我相信该选项peakpat这就是我能做到的
  • 多功能测试仪替代 system.time

    我已经看到 我认为是这样 使用了类似于 system time 的函数 它可以同时评估多个函数的时间并输出一个输出 我不记得它是什么 并且用我正在使用的术语进行互联网搜索并没有得到我想要的响应 有人知道我正在谈论的功能的名称 位置吗 你想要
  • 将数据框中的每个 x 个字符拆分为字符串

    我知道这里有一些关于每隔一段时间分割一个字符串的答案nth字符 例如this one https stackoverflow com questions 23208490 split each character in r and this
  • 如何使用 usmap 标记数字而不是名称?

    我知道 usmap 有一个选项label in plot usmap 我想标记一些数字 而不是状态名称 我想 usmap 中应该有与州质心坐标相关的数据 但我不知道如何找到它 如果我能得到 坐标然后我可以用它来标记数字geom text 这
  • R 中的快速 QR 分解

    我有大量矩阵 需要对其执行 QR 分解并存储生成的 Q 矩阵 进行归一化 以便 R 矩阵在其对角线上具有正数 除了使用之外还有其他方法吗qr 功能 这是工作示例 system time Parameters for the matrix t
  • Dendextend:关于如何根据定义的组为树状图的标签着色

    我正在尝试使用一个名为 dendextend 的很棒的 R 包来绘制树状图并根据一组先前定义的组为其分支和标签着色 我已阅读您在 Stack Overflow 中的答案以及 dendextend vignette 的常见问题解答 但我仍然不
  • pyomo + 网状错误 6 句柄无效

    我正在尝试运行pyomo优化 我收到错误消息 Error 6 The handle is invalid 不知道如何解释它 环顾四周似乎与特权有关 但我不太明白 在下面找到完整的错误跟踪以及重现它的玩具示例 完整的错误跟踪 py run f
  • 如何在 MATLAB 中绘制 3D 曲面图?

    我有一个像这样的数据集 0 1 0 2 0 3 0 4 1 10 11 12 13 2 11 12 13 14 3 12 13 14 15 4 13 14 15 16 我想在 matlab 中绘制 3D 曲面图 使列标题位于 y 轴 行标题
  • r 中训练和测试数据的最小最大缩放/归一化

    我正在创建一个函数 它将训练集和测试集作为其参数 最小 最大缩放 标准化并返回训练集并使用这些same最小值和最小 最大范围的值 标准化并返回测试集 到目前为止 这是我想出的功能 min max scaling lt function tr
  • 在 R 中使用 lapply 绘制多个数据帧

    我正在尝试使用 lapply 函数绘制多个数据帧 每个数据帧一个图 但是尽管有关此主题的所有帖子我都找不到答案 因为我不断收到错误 图的输出列表为空 我的数据结构如下 df1 lt mtcars gt group by cyl gt tal
  • ggplot2 geom_密度和geom_histogram在一个图中

    如何制作一个所有条形加起来为 1 的直方图 并在适合的上方添加一个密度层 set seed 1234 df lt data frame sex factor rep c F M each 200 weight round c rnorm 2
  • 将阴影区域添加到五分位数之间的直方图中

    All 我有一个包含 2 个直方图的图表 其中我还绘制了代表第 20 40 60 和 80 个百分位数的线条 下面的代码使用虚拟数据重现了类似的图表 data lt rbind data frame x rnorm 1000 0 1 g o
  • 在 r 中的 group_by 之后建模后取消列表列的嵌套

    我想对所有组进行线性回归group by 将模型系数保存在列表列中 然后使用 unnest 扩展列表列 这里我用的是mtcars以数据集为例 注 我想用do here becausebroom tidy 不适用于所有型号 mtcars gt
  • 文本挖掘 pdf 文件/词频问题

    我正在尝试挖掘一篇具有丰富 pdf 编码和图表的文章的 pdf 我注意到 当我挖掘一些 pdf 文档时 我得到的高频词是 phi taeoe toe sigma gamma 等 它与某些 pdf 文档配合良好 但与其他文档配合使用时却得到这
  • 计算 R 中各列的唯一值

    我正在尝试创建一个新变量 其中包含来自两个不同列的字符串值的唯一计数 所以我有这样的东西 例如 A tibble 4 x 2 names partners
  • 将不均匀的层次列表转换为数据框

    我认为还没有有人问过这个问题 但是有没有一种方法可以将具有多个级别和不均匀结构的列表的信息组合成 长 格式的数据帧 具体来说 library XML library plyr xml inning lt http gd2 mlb com c
  • R 中用于调用 sed、rsync、ssh 等的 system() 的替代方案:函数是否存在,我应该编写自己的函数,还是我错过了重点?

    最近 我发现了base files命令 与其他命令一起使用 例如getwd write lines file show dir等等 似乎有许多 bash 函数的 R 等价物 我还在 R 中编写了一些函数来简化对ssh and rsync通过
  • read_html(url) 和 read_html(content(GET(url), "text")) 之间的区别

    我正在看这个很棒的答案 https stackoverflow com a 58211397 3502164 https stackoverflow com a 58211397 3502164 解决方案的开头包括 library httr
  • 条件字体颜色 R Markdown

    我无法找到一种方法来根据变量的值 gt 0 0 或 r setup include FALSE x lt 4 This is an R Markdown document r if x gt 0 textcolor red Markdown
  • R:使用 tidyverse 将 NA 替换为 df 中的其他变量

    我想使用 tidyverse 替换 df 中的 NA 值 我想要的值应该从其他列中计算出来 input ID X1 X2 X3 A 0 96 NA 0 97 B 1 00 NA 1 01 C 0 98 0 03 NA A 1 00 NA 1

随机推荐

  • 什么是命名空间污染?

    命名空间污染 一词是什么意思 为什么将方法设为静态有助于防止它 这个问题 https stackoverflow com questions 8862665 what does it mean global namespace would
  • 使用 Firebase 使 URL 过期

    如何创建指向 Firebase 数据的临时 URL 但数据 和 URL 将在特定时间 即 5 分钟或 15 分钟 后被销毁 根据数据的存储方式 有几种不同的选项可用于按时间戳删除数据 假设数据未排序 并且您已将时间戳存储为每个记录中的字段
  • 如何将 javascript 中的数字数组转换为字符串?

    就像我有var arr 1 2 3 4 5 我希望这成为arr 1 2 3 4 5 我尝试使用 var x arr 0 toString outputs 1 但当我这样做时typeof x它输出 数字 当我这样做时我该如何转换它typeof
  • 如何从文本文件中删除非 UTF-8 字符

    我有一堆以 utf 8 编码的阿拉伯语 英语 俄语文件 尝试使用 Perl 脚本处理这些文件时 出现以下错误 Malformed UTF 8 character fatal 手动检查这些文件的内容 我发现其中有一些奇怪的字符 现在我正在寻找
  • java.lang.IllegalArgumentException:名称

    它在 Eclipse 中工作正常 但是当我创建 jar 并运行它时会给我这个异常 这是我正在使用的非 Web Spring Boot 应用程序 我应该作为独立 jar 运行 java lang IllegalArgumentExceptio
  • 如何在结束循环之前查看生成器的打印输出?

    我正在尝试在处理大量数据的生成器内打印调试信息 但是 只有当生成器完成时我才能看到结果 我使用的是python 3 我的代码如下 def generator while 1 print end time sleep 1 yield 1 fo
  • 使用 Jenkins 进行发布管理有哪些选项

    我正在评估 Jenkins 和 Apache Continuum 等构建引擎 我们的大部分构建都使用 Maven Jenkins 有哪些用于发布管理的选项 我所说的发布管理是指从源代码控制中的分支创建发布 然后更新 Maven 中的版本标签
  • 使用 GWT CellTableBuilder 按需构建自定义行

    GWT 2 5 RC 中引入了 CellTableBuilder API 但尚未提供全面的文档 是否有使用 CellTableBuilder 实现按需自定义行构建的教程 示例 到目前为止我发现的唯一例子就是这个http showcase2
  • 在大文件中进行搜索的最佳方法是什么?

    我希望对大文件 gt 4GB 应用 KMP 或类似 搜索 我预计这会给我带来问题 我无法将其全部复制到内存中 因为那里没有足够的空间 我的问题是 进行此搜索的最佳方法是什么 我是否应该简单地创建一个 FILE 并直接在文件中进行搜索 是否应
  • 如何组合数据然后分离连接的数据?

    我想将一系列数据合并到一个单单元格 G5 中 然后我想将Value G5拆分为原始形式 太感谢了 https docs google com spreadsheets d 1sVrpPvtQPG0Zw2Ar UxPHXNN0atEdQNX
  • PHP 中有从数组中提取“列”的函数吗?

    我有一个数组的数组 具有以下结构 array array page gt page1 name gt pagename1 array page gt page2 name gt pagename2 array page gt page3 n
  • Cobertura 如何与 JUnit 配合使用?

    我不明白Cobertura如何与JUnit合作 据我了解 cobertura 修改编译的字节代码并在该字节代码中插入它自己的命令 好的 之后 我们运行 Junit 框架并对其进行测试 谁能解释一下 cobertura 在什么时候获取执行了哪
  • 是否有一个 Python 习惯用法可以通过短路来评估函数/表达式列表?

    我写了一个简单的脚本来解决 逻辑谜题 这是学校里的谜题类型 你会被赋予许多规则 然后必须能够找到诸如 有五个音乐家 名字分别为 A B C 之类的问题的解决方案 D E 在一场音乐会上演奏 每人一个接一个地演奏 如果 A 在 B 之前演奏
  • 如何从键而不是值推断类型参数?

    我有一个表示有向图结构的类 它是具有一个类型参数的通用类K extends string对于节点名称 图表是通过传递一个对象来构造的 例如 a b b 在这个最小的例子中代表两个节点a and b 有一条边a b class Digraph
  • 为什么 ScriptEngine 不再有 Execute 方法?

    目前我已经开始更认真地与罗斯林合作 我发现本文 http visualstudiomagazine com articles 2011 11 16 the roslyn scripting api aspx关于使用ScriptEngine在
  • 通过四维数据寻路

    问题是找到飞机穿过四维风 不同高度的风 并且随着飞行而变化的风 预测风模型 的最佳路线 我使用了传统的 A 搜索算法 并对其进行了修改 使其能够在 3 维和风向量中工作 它在很多情况下都有效 但速度非常慢 我正在处理大量数据节点 并且不适用
  • PATH_MAX和NAME_MAX之间是什么关系,如何获取?

    In limits h 并且在 POSIX 联机帮助页的各个地方都引用了PATH MAX and NAME MAX 这些相互之间有何关系 他们的官方文档在哪里 如何在 C Python 和 GNU shell 环境的运行时和 相关 编译时获
  • 如何将身份验证、角色和安全性融入 DDD 中?

    如何在 C 域驱动设计项目中实现角色和安全性 关于它是否应该由调用应用程序 ASP NET MVC 实现还是在域模型本身 模型实体和服务 中实现 我们存在一些激烈的争论 有些人认为它应该在网站本身中 因为那里已经存在身份验证 但这意味着每次
  • 将屏幕截图上传到 iTunes Connect 时出现奇怪的错误

    我正在尝试将新的屏幕截图上传到 iTunes Connect 上的游戏页面 但当我这样做时 我收到了一个与现实和 或常识无关的错误 基本上 我上传了一堆具有正确分辨率 尺寸等的 iPhone 屏幕截图 然后收到一条错误消息 说我没有这样做
  • 如何在 igraph R 中的图组件之间添加边

    我有一个图表包含4 components 现在 我想在其中添加一个优势all components基于size of the membership 例如 下图包含4 components 首先 我将连接all components with