也许这就是你所追求的:
m <- as.matrix(dat)
el <- cbind(m[, 1], c(m[, -1]))
Here, el
是一个边列表,通过绑定第一列创建m
,通过删除矩阵子集的维度得到一个向量m[, 2:3]
(相当于m[, -1]
)。请注意,第一个向量cbind
有 3 个元素,而第二个向量有 6 个元素。第一个将被回收到第二个的长度。我们所做的相当于做cbind(rep(m[, 1], 2), m[, -1])
.
这是我们的边缘列表的样子。
el
## [,1] [,2]
## [1,] "maman" "Canada"
## [2,] "sophia" "USA"
## [3,] "Antoine" "Mexico"
## [4,] "maman" "Coelho"
## [5,] "sophia" "Rimbaud"
## [6,] "Antoine" "The flight"
我们现在可以通过绘制边列表来获得邻接矩阵graph.edgelist
并提取邻接矩阵get.adjacency
.
get.adjacency(graph.edgelist(el))
## 9 x 9 sparse Matrix of class "dgCMatrix"
## maman Canada sophia USA Antoine Mexico Coelho Rimbaud The flight
## maman . 1 . . . . 1 . .
## Canada . . . . . . . . .
## sophia . . . 1 . . . 1 .
## USA . . . . . . . . .
## Antoine . . . . . 1 . . 1
## Mexico . . . . . . . . .
## Coelho . . . . . . . . .
## Rimbaud . . . . . . . . .
## The flight . . . . . . . . .