我试图在很长的距离上执行快速扫描,但遇到问题。
我有一个非常大的csv文件(大约9100万行,因此for循环在R中需要太长时间)关键字之间的相似性(大约50,000个唯一关键字)当我读入data.frame时看起来像:
> df
kwd1 kwd2 similarity
a b 1
b a 1
c a 2
a c 2
这是一个稀疏列表,我可以使用sparseMatrix()将其转换为稀疏矩阵:
> myMatrix
a b c
a . . .
b 1 . .
c 2 . .
但是,当我尝试使用as.dist()将其转换为dist对象时,我从R中得到“问题太大”的错误。我已经在这里阅读了其他dist问题,但代码其他人建议不适用于我上面的示例数据集。
感谢您的帮助!
答案 0 :(得分:3)
虽然首先使用稀疏矩阵似乎是一个好主意,但我认为这种方法存在一些问题:您的缺失距离将编码为0
s,而不是{{1 s(见Creating (and Accessing) a Sparse Matrix with NA default entries)。如你所知,在聚类时,零差异与缺失的意义完全不同......
所以无论如何,你需要的是一个带有很多NA
s的dist对象,用于弥补你的不足之处。不幸的是,你的问题太大了,需要太多的内存:
NA
这只是处理输入...即使64位机器有大量内存,我也不确定聚类算法本身不会无限制地阻塞或运行。
您应该考虑将问题分解成更小的部分。