我正在尝试从csv生成邻接矩阵 .

csv包含2列,1表示用户,1表示项目 . 这两列构成了一个二分图,其中每个用户可以是多个项目的一部分,或者根本没有,但是同一组的节点之间没有边缘(同一个用户 - 项目对没有重复的条目,但是有重复的条目相同用户或具有不同组合的项目对) .

我写了一个比较,用于比较每个用户的项目与使用Matlab和ismember(a,b)的整个项目集 . 该算法在每个条目中迭代运行 . 最后,我有一个大小为M的邻接矩阵(| users | | user |)x(| users | | user |) .

对于小入口数<15000,它工作得很快,但对于15000的样本,Matlab停止 . 我使用零矩阵(零(r,c))初始化邻接矩阵,并逐行添加ismember(a,b)的结果 . 但对于我的Matlab,零(15000,15000)的零矩阵几乎可以最大化内存 . 我尝试在R中使用该大小(矩阵(0,15000,15000))制作零矩阵,并且还最大化R的存储器 .

有办法解决这个问题吗?我的完整样本量为597,000行(约70,000个用户和约35,000个项目),我想对它进行网络分析 .

此外,我想保持矩阵格式,而不是邻接列表,因为我有一个最大切割最小流量算法,我想在结果上运行,它只适用于矩阵 .

更新:

数据看起来像这样

User  |  Project
382       2429
385       2838
294       2502
...       ...

它取自SourceForge,使用了Notredame大学的Zerlot . 其中每个int值是SQL数据库中的键 . 我想将此联属数据转换为单模式用户到用户邻接矩阵,其中用户之间的每个边缘都是共享项目 .