我试图在twitter中找到两个用户(union(关注者A,关注者B))的唯一关注者数量。我使用了以下代码,它对小图形非常适用。
library(igraph)
library(Matrix)
mat<-matrix(c("A","A","C","B","C","D","H","F","F","I","I","C","D","D","D","E","E","F","E","G","F","G"),ncol=2)
mat<-as.data.frame(mat)
graph<-graph.data.frame(mat)
undirected_graph<-graph.data.frame(mat,directed=FALSE)
A<-get.adjacency(graph)
D<-colSums(A)
B<-matrix(D,ncol=length(D),nrow=length(D))
#unique followers of two selected nodes
unique<-B+t(B)-t(A)%*%A
runique<-unique-get.adjacency(undirected_graph)
现在,我想将此代码用于较大的图形。代码可以很容易地创建邻接矩阵,但当涉及到矩阵B时,我会耗尽内存。我尝试了以下代码:
B<-Matrix(D,ncol=length(D),nrow=length(D),sparse=T)
但我仍然有同样的问题。你能帮我解决这个问题吗?
unique
可以在不计算B
的情况下计算,如下所示:
unique <- t(D + t(D - crossprod(A)))