从 data.frame 创建具有三列的相异矩阵

Create dissimilarity matrix from data.frame with three columns

data.frame 包含两个社区 comm1comm2 之间的差异 y。我想将其转换为 dist.

类型的相异矩阵
library(tidyverse)
library(RcppAlgos)

k<-10 
comm_code<-seq(1,k,by=1)
data<-comboGrid(comm_code,comm_code, repetition = F)                      
data<-data.frame(data)
data<- data %>% rename(comm1=Var1,comm2=Var2)
rm(comm_code,k)
data$y<-rnorm(nrow(data),10,2)

我该怎么做?

谢谢

您实际上可以自己创建它:

structure(data$y, Size = 10, Labels = 1:10, method = "user", class = "dist")

           1         2         3         4         5         6         7         8         9
2  12.253872                                                                                
3   9.609795  9.053038                                                                      
4  11.218275  8.893657 11.363967                                                            
5   8.933017 10.775817 10.900534  6.272734                                                  
6   8.862755 11.961004 14.079231 12.244758 10.079188                                        
7   8.002884 12.009199 10.015648 14.295683 12.754016  7.623887                              
8  12.464341  8.174952 11.684419 11.243689 13.950215 13.118307 10.433698                    
9  10.230285  9.020911  9.105817 11.061137  9.250890  6.634516  8.297935  9.577125          
10  8.291082  8.067096 11.114652  8.922511 11.419875  8.497445 10.100889  9.789253  7.591539

或使用 igraph 库:

library(igraph)

d <- graph.data.frame(data, directed = FALSE)
dist(get.adjacency(d, attr = "y", sparse = T), diag = T)