问题标签 [tidygraph]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
108 浏览

r - 如何(有效地)从访问过的地方列表中构建边缘列表?

我的原件data.table由三栏组成。
site,observation_numberid.

例如,以下是 id = z 的所有观察结果

这意味着 IDz已经从abc

每个 ID 没有固定数量的站点。

我希望将数据转换为这样的边缘列表

模拟数据

我目前这样做的方式感觉很复杂而且很慢(sox 有 1.5 mio 行,dt_out 有 ca. 7.5 mio. rows)。我基本上使用 for 循环observation_number将数据拆分为每个 ID 仅存在一次的块(即 - 只有一次旅程,到 - 从)。然后我投射数据,并将所有块剥离到一个新的 data.table 中。

我希望有人能帮我优化这个,最好创建一个函数,我可以在其中输入 data.table、站点 id、observationnumber id 和 id。出于某种原因,不管它是否有效,我都无法创建一个函数。

更新

使用系统时间(并运行系统时间几次):

ps make_edgelist 已更新以订购 data.table

我很惊讶 dplyr (with lead) 几乎和 make_edgelist 一样快,并且比 data.table with 快得多shift。我想这意味着 dplyr 实际上会更快,因为更复杂的领先/滞后/移位。

我也觉得它令人费解 - 但不知道它是否有任何意义,dplyr 比两个 data.table 解决方案中的任何一个都使用了更多的“系统”时间。

输入数据:150 万行。结果:60 万行。

0 投票
1 回答
68 浏览

r - 如何将 tidygraph tibble 的节点和边缘部分分离成两个单独的纯 tibble

我有以下tidygraph 标题

它看起来像这样:

有没有一种方便的方法可以将它们分成两个纯小块,一个用于节点部分,另一个用于边缘部分。

0 投票
2 回答
457 浏览

r - igraph中最低的共同祖先

假设我们有一棵树igraph

reprex 包(v0.3.0)于 2019 年 12 月 21 日创建

我们如何找到任意节点集合的最低共同祖先(LCA)?也就是说,在上面的例子中

  1. 7 和 14 的 LCA 为 2。
  2. 6、9、12 和 14 的 LCA 为 1。
  3. 1 和 8 的 LCA 为 1。
  4. 任何节点的 LCA 都是它自己。

等等。

感觉应该有一种优雅的方式来做到这一点igraph,但我还没有找到它。我玩弄了调用的交集all_simple_paths,但是由于我没有获得每个节点级别的好方法,所以这没有帮助。

我知道许多系统发育包为其他数据结构实现 了这一点,但如果图表上有合理的解决方案,我宁愿避免相互转换。(不过,我对tidygraph解决方案非常满意。)

0 投票
0 回答
141 浏览

r - 使用 tidygraph 和 ggraph 为单个节点着色

我有一个我绘制的 tidy_igraph 数据网络。但是,我想将图中的单个节点着色为与所有其他节点不同的颜色,因为它是图中的中心点。

我做了以下操作来制作一个带有颜色列的小标题:

现在我想将单个节点作为图层添加到 ggraph,如下所示:

0 投票
1 回答
565 浏览

r - 关于如何使用 tidygraph 在网络分析中将权重作为距离

我刚刚执行了一个代码来使用 igraph 和 tidygraph 获得一致的图形。在我的示例中,A 和 C 之间的权重仅为 1。因此 igraph 包中的网络图将权重适当地反映为距离。

在此处输入图像描述

但是,我认为 tidygraph 未能将重量作为距离。例如,尽管权重很大,但 B 和 E 没有联系。

在此处输入图像描述

如何将重量反映为距离?

0 投票
1 回答
41 浏览

r - 列表到分层图

有没有一种优雅的方法来转换 R 列表,例如..

到一个层次图对象,例如可以生成一个桑基图?热衷于避免可怕的递归破解是可能的。

如果有帮助,可以以另一种方式合并叶值(本例中的百分比)。提前致谢。


编辑。示例 sankey 来说明图结构

示例桑基图

0 投票
1 回答
109 浏览

r - 如何在 igraph 中获得“关节边缘”?

我正在尝试使用 igraph (和 tidygraph )及其函数来识别关节点之间的边缘articulation_points。换句话说,我正在寻找我的图表中的边缘,如果切割会将图表一分为二。我的第一个猜测是,我需要做的就是将边缘过滤到fromto顶点都是关节点的边缘。不幸的是,我很快发现这是不够的,因为这种方法会标记边缘,如果在它们彼此相邻时切割它们不会分裂网络。这个“关节边缘”列表还有另一条路线吗?

这是我的(不正确的)逻辑。

我将尝试提出一个最小的网络,该网络具有这种逻辑失败的特性。敬请关注。

0 投票
0 回答
52 浏览

r - 如何将重复节点修剪到最近的共同祖先?数据树 R

我有一个表示为树的组织结构。

如果你注意到,树中的关系是一个孩子可以有多个父母。如下图所示,子公司 4 位于 4 个独特的基础分支之下。同样,子公司 3 位于 2 个独特的分支机构。

树形结构

我如何总结我的树,以便孩子坐在多个分支上的任何地方,我都可以在最早的共同祖先下查看该孩子。

因此,例如,子公司 4 需要位于 BIG CORP 之下,因为这是包含子公司 4 的所有分支机构的第一个共同祖先。同样,子公司 3 应直接在 ABC Inc. 下报告。

0 投票
1 回答
332 浏览

r - 是否可以调整 ggrgraph 中的相对节点大小?

新来的R;在 with 的帮助下尽力呈现我的问题reprex

我有一个使用包的节点大小按度数的网络ggraph

绘制的网络看起来不太好,因为一些节点非常小。

我想增加节点的相对大小。

igraph中,我会增加节点的相对大小,例如:

我在ggraph(在下面的 rerpex 中)尝试了类似的东西,但结果是度数的乘积,而不是节点相对大小的增加。

ggraph如果只是因为整洁/语法方法和管理(哦,非常陡峭的)学习曲线,我想坚持使用该软件包(尽管如果有人对这两个软件包有一些想法,我可能会被说服)。

下面的示例没有附加图,因为我的声誉不够高,无法发布图像。但如果我做对了,reprex 应该做它应该做的事情。

reprex 包(v0.3.0)于 2020-07-18 创建

0 投票
3 回答
170 浏览

r - 在数据框中查找 ID 的子 ID 的函数

我有一个包含两列的数据框,一个 ID 列和一个具有与相应 ID 相关的子 ID 的列。子 ID 可以再次具有子 ID(在这种情况下,以前的子 ID 现在是一个 ID)。

我想编写一个函数来查找与 ID 相关的所有子 ID。它应该返回一个包含所有子 ID 的向量。

这与我迄今为止在 R 中所做的一切都非常不同,我很难为这个问题写一个好的标题。因此,如果使用正确的措辞,我可能已经通过谷歌搜索找到了答案。

我解决这个问题的第一个直觉是 while 循环。由于我也不知道可能有多少子级别,因此该功能应继续执行,直到找到所有子级别。我从来没有使用过while循环,也不知道如何在这里实现它们。

也许有人知道解决这个问题的好方法。谢谢!

编辑:忘记将 tibble 分配给 df 并在函数调用中使用此参数。