在R语言中将最近邻列表转换为二元邻接矩阵的实现方法
3近邻列表转24×24二元邻接矩阵(R语言实现)
实现逻辑
- 先创建维度为24×24的全0矩阵,行列索引对应1~24号站点
- 逐行读取每个站点的3个近邻编号,将矩阵对应位置赋值为1
- 可根据分析需求选择生成有向或无向邻接矩阵
实现代码(基础R无需额外依赖包)
# 初始化全0邻接矩阵,行名、列名对应站点编号 n_site <- 24 adj_matrix <- matrix(0, nrow = n_site, ncol = n_site, dimnames = list(1:n_site, 1:n_site)) # 遍历每个站点填充邻接关系 for (i in 1:n_site) { # 提取当前站点的3个近邻编号 neighbors <- as.integer(near_neigh[i, c("nn.index.1", "nn.index.2", "nn.index.3")]) # 生成有向邻接矩阵:仅当j是i的近邻时记为1,矩阵不对称 adj_matrix[i, neighbors] <- 1 # 若需要生成无向邻接矩阵(只要任意一方是另一方的近邻就记为相邻,矩阵对称),取消注释下面一行 # adj_matrix[neighbors, i] <- 1 } # 输出验证:查看矩阵维度 dim(adj_matrix) # 输出验证:查看前6行前6列的矩阵内容 head(adj_matrix[,1:6])
内容的提问来源于stack exchange,提问作者Romain
相关产品推荐
相关产品推荐

