【问题标题】:How do I make some calculations in R? [closed]如何在 R 中进行一些计算? [关闭]
【发布时间】:2020-03-01 17:29:30
【问题描述】:

我是 R 新手,这个问题很困扰我。我有一个加权和有向网络,我想做以下事情:

我有一个 igraph 网络。我想计算所有边的 edge_betweenness 并创建一个包含以下列的矩阵:

edgeID, node1, node2, weight, edgeBetweenness

edgeID 指的是图中边的索引。我需要索引或 ID,因为我想在另一个矩阵中使用该矩阵的元素。

非常感谢您的帮助。

【问题讨论】:

  • See here 提出一个人们可以帮助解决的 R 问题。这包括一个数据样本、所有必要的代码,以及对你正在尝试做什么和什么没有奏效的清晰解释。还可以尝试编辑标题以更好地代表具体问题是什么

标签: r igraph directed-graph weighted-graph


【解决方案1】:

首先,请考虑 camille 关于如何提供可重现且最小的示例的建议。对于以后的帖子,总是提供一些示例数据供我们使用。

针对您的问题,让我们生成一个随机样本图并为每条边分配一些随机权重。我使用固定的随机种子来确保随机数据的可重复性。

set.seed(2020)
ig <- graph.full(5)
E(ig)$weights <- sample(10, length(E(ig)), replace = T)

然后我们可以使用igraph::as_data_frameigraph::edge_betweenness 分别提取边缘列表(包括权重)和边缘介数。

transform(
    edgeID = 1:length(ig),
    as_data_frame(ig),
    edgeBetweenness = edge_betweenness(ig))
#    from to weights edgeID edgeBetweenness
# 1     1  2       7      1               1
# 2     1  3       6      2               1
# 3     1  4       8      3               1
# 4     1  5       1      4               1
# 5     2  3       1      5               1
# 6     2  4       4      6               1
# 7     2  5      10      7               1
# 8     3  4       6      8               1
# 9     3  5       1      9               1
# 10    4  5       8     10               1

【讨论】:

  • 谢谢!有用!很抱歉有错误的问题。
  • 虽然有一个小问题。 edgeID = 1:lenght(ig) 不正确,如果 ids 会导致重复。相反,我使用了 edgeID = 1:gsize(ig)。
猜你喜欢
  • 1970-01-01
  • 2020-07-08
  • 2015-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多