我需要一个包含三列的数据框:i,j(更改)和k(j的更改)。我有一个邻接矩阵(下面的示例)。从那里我可以得到一个图形对象并提取边缘列表。如何处理数据以获得类似下面的WANT数据框的输出?
有(矩阵和边列表):
1 2 3 4 5
1 0 0 0 1 0
2 0 0 1 1 1
3 0 0 0 0 0
4 1 1 0 0 1
5 1 1 0 1 0
g <- graph_from_adjacency_matrix(mat)
get.edgelist(g)
i j
1 4
2 3
2 4
2 5
4 1
4 2
4 5
5 1
5 2
5 4
WANT(ijk边缘列表):
i j k
1 4 2
1 4 5
2 4 1
2 4 5
4 2 3
4 5 1
4 5 2
5 1 4
5 2 3
5 2 4
5 4 1
5 4 2
ijk边缘列表应使所有可能的三倍与ij匹配,不包括自我循环(例如:1 4 1)
答案 0 :(得分:1)
我实际上能够使用igraph和dplyr来做到这一点:
console.log
答案 1 :(得分:1)
数据:
input-group
库:
<div class="input-group">
<input type="text" class="form-control" aria-label="Amount (rounded to the nearest dollar)" style="width: 40px; float: right;">
<span class="input-group-addon">Qty.</span>
<span class="input-group-btn">
<button aria-label="Add" name="inWarenkorb" type="submit" value="Add" class="submit btn btn-primary" style="width:100%">
<span>Add to basket</span>
</button>
</span>
</div>
解决方案:
as.matrix(read.table(text = "0 0 0 1 0
0 0 1 1 1
0 0 0 0 0
1 1 0 0 1
1 1 0 1 0",
header = F, stringsAsFactors = F)) -> m1
dimnames(m1) <- list(1:5, 1:5)
输出:
library(igraph)
library(dplyr)
library(tidyr)
library(magrittr)