用R生成邻接表

时间:2016-10-03 01:49:40

标签: r adjacency-matrix gephi

我生成了一个具有余弦相似度的邻接表mytablem1是一个DTM

cosineSim <- function(x){
        as.dist(x%*%t(x)/(sqrt(rowSums(x^2) %*% t(rowSums(x^2)))))
}

cs <- cosineSim(m1)

mytable

"";"1";"2";"3";"4";"5";"6";"7";"8"
"1";0;0;0;0;0;0;0;0
"2";0;0;0;0;0;0;0;0
"3";0;0;0;0.259;0;0;0;0
"4";0;0;0;0;0;0;0;0.324
"5";0;0;0;0;0;0;0;0
"6";0;0;0;0;0;0;0;0
"7";0;0;0;0;0;0;0;0
"8";0;0;0;0;0;0;0;0

当我用Gephi打开它时,我发现节点包含表中的所有数字

Id  label
"   "   
1"  1"  
2"  2"  
3"  3"  
4"  4"  
5"  5"  
6"  6"  
7"  7"  
8   8   
0   0   
0.259   0.259   
0.324   0.324   
8"  8"  

我预计节点只包含1-8作为id,而不是“”,“0和其他数字。我的邻接表有什么问题吗?

1 个答案:

答案 0 :(得分:1)

删除双引号并尝试重新导入。由于您使用的是R,我建议您使用igraph并在您的案例中graph_from_adjacency_matrix自动化您的管道,参见here。那么你需要export GraphML中的图形,Gephi可以轻松阅读

为了完整起见,这是一些示例代码:

library(igraph)
t <- ';1;2;3;4;5;6;7;8
1;0;0;0;0;0;0;0;0
2;0;0;0;0;0;0;0;0
3;0;0;0;0.259;0;0;0;0
4;0;0;0;0;0;0;0;0.324
5;0;0;0;0;0;0;0;0
6;0;0;0;0;0;0;0;0
7;0;0;0;0;0;0;0;0
8;0;0;0;0;0;0;0;0'

f <- read.csv(textConnection(t), sep = ";", header = T, row.names = 1)
m <- as.matrix(f, rownames.force = T)
colnames(m) <- seq(1:dim(f)[1])
rownames(m) <- seq(1:dim(f)[1])
graph <- graph_from_adjacency_matrix(m, mode=c("directed"), weighted = T)
write.graph(graph, "mygraph.graphml", format=c("graphml") )