gpt4 book ai didi

r - 将二进制矩阵转换为组

转载 作者:行者123 更新时间:2023-12-04 10:54:07 24 4
gpt4 key购买 nike

这是一个看似简单的问题,但我想不出答案。这是最简单的情况:

考虑以下矩阵:

friendMatrix  <- matrix(c(1,1,0,0,0,     
1,1,1,0,0,
0,1,1,0,0,
0,0,0,1,1,
0,0,0,1,1),nrow=5)

看起来像这样
     [,1] [,2] [,3] [,4] [,5]
[1,] 1 1 0 0 0
[2,] 1 1 1 0 0
[3,] 0 1 1 0 0
[4,] 0 0 0 1 1
[5,] 0 0 0 1 1

我想做的是使用这个矩阵来识别 friend 组,其中 1 表示友谊。组是基于组内的任何连接而形成的,而不仅仅是一级连接(即,1 是 2 的 friend ,2 是 3 但不是 1 的 friend ,但它们都在同一个组中)。如果一行仅与自身相关联,那么它就是它自己的组。我想创建一个 data.frame 指示这些组中的成员资格(使用行号作为 ID)(一个数字作为 ID 很好,我只是使用字母来避免混淆)。对于此示例,将是以下内容:
row  group
1 A
2 A
3 A
4 B
5 B

我已经考虑了一些聚类算法,但这在这里似乎有点矫枉过正,因为这些组定义明确且显而易见。

最佳答案

使用 igraph通过对结果图的连接组件进行分组来创建图和创建集群:

library(igraph)
g1 <- graph.adjacency( friendMatrix )
cl <- clusters(g1)$mem
## Display the clusters in a data.frame as OP excpeted
data.frame(row=seq_along(cl),group=LETTERS[cl])

row group
1 1 A
2 2 A
3 3 A
4 4 B
5 5 B

关于r - 将二进制矩阵转换为组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29306526/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com