你好,我希望将一个邻接列表(3列)转换为邻接矩阵。在这个论坛上,我找到了多个关于如何将边缘列表转换为邻接矩阵的示例。我成功地将两列列表转换为邻接矩阵。我尝试了我能在网上找到的所有解决方案,但似乎我还缺少一点步骤。
我想查看所有顶点之间的交互情况。类似于这个: http://sna.stanford.edu/sna_R_labs/output/lab_1/1.3_Krackhardt_Friendship.pdf。任何帮助或指示将不胜感激!!!
我的尝试
我的变量是User、Country和books。
User<-c("maman","sophia","Antoine")
Country<-c("Canada","USA","Mexico")
books<-c("Coelho","Rimbaud","The flight")
dat<-data.frame(User, Country,books)
User | Country | books
maman | Canada | Coelho
sophia| USA | Rimbaud
Antoine| Mexico | The flight
首次尝试
library(igraph)
m<-as.matrix(dat)
g<-graph.adjacency(m, mode="directed") ### If that worked I could have used
"get.adjacency"
第二次尝试
我试图将数据转换为边列表,但由于有三列,所以出现了错误。
el<-as.matrix(dat)
g=graph.edgelist(el,directed=TRUE) # turns
期望输出
maman sophia Antoine Canada USA Mexico Coelho Rimbaud The fligth
maman 1 0 1 0 0 0 0 1 0
sophia 0 0 0 0 1 0 1 0 1
Antoine 0 1 1 0 1 0 0 1 0
Canada 1 0 1 0 0 1 0 1 1
USA 0 0 0 1 0 0 0 0 1
Mexico 0 0 0 0 1 1 1 0 0
Coelho 0 0 1 1 0 1 0 1 0
Rimbaud 1 0 1 1 0 0 0 1 1
The fligth 0 1 0 0 1 1 0 0 1
我想查看所有顶点之间的交互情况。类似于这个: http://sna.stanford.edu/sna_R_labs/output/lab_1/1.3_Krackhardt_Friendship.pdf。任何帮助或指示将不胜感激!!!
m <- replicate(3, sample(letters, 5)); get.adjacency(graph.edgelist(cbind(m[, 1], c(m[, -1]))))
。 - jbaumsshift
+~
)将文本格式化为注释中的代码...请参见此链接获取更多信息。) - jbaumsreplicate
与问题无关,我只是用它来简洁地创建一些随机数据。我也可以使用data.frame(sample(letters, 5), sample(letters, 5), sample(letters, 5))
。 - jbaums