gpt4 book ai didi

r - 从索引向量创建二元邻接矩阵

转载 作者:行者123 更新时间:2023-12-02 05:52:29 25 4
gpt4 key购买 nike

假设我有一个如下所示的向量:

x <- sample(5, 500, replace = TRUE)

这样每个元素对应于从 1 到 5 的某个索引。

从该向量创建二元邻接矩阵的有效方法是什么?详细来说,矩阵 A 应满足 A[i,j] = 1 如果 x[i] = x[j] 并且否则为 0。

最佳答案

在一行中,你可以做到

outer(x, x, function(x, y) as.integer(x==y))

返回

     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] 1 0 0 0 0 0 1 0 0 0
[2,] 0 1 1 1 0 1 0 0 1 0
[3,] 0 1 1 1 0 1 0 0 1 0
[4,] 0 1 1 1 0 1 0 0 1 0
[5,] 0 0 0 0 1 0 0 0 0 0
[6,] 0 1 1 1 0 1 0 0 1 0
[7,] 1 0 0 0 0 0 1 0 0 0
[8,] 0 0 0 0 0 0 0 1 0 0
[9,] 0 1 1 1 0 1 0 0 1 0
[10,] 0 0 0 0 0 0 0 0 0 1

或者,分成两行

myMat <- outer(x, x, "==")
myMat[] <- as.integer(myMat)

检查它们是否相同。

identical(myMat, outer(x, x, function(x, y) as.integer(x==y)))
[1] TRUE

数据

set.seed(1234)
x <- sample(5, 10, replace = TRUE)

关于r - 从索引向量创建二元邻接矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45311985/

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