稀疏距离CSV到距离对象R的有效转换方法



我有一个非常大的csv文件(大约9100万行,因此for循环在R中花费太长时间),其中包含关键字之间的相似性(大约50000个唯一关键字),当我读入数据帧时,它们看起来像:

> df   
kwd1 kwd2 similarity  
a  b  1  
b  a  1  
c  a  2  
a  c  2 

这是一个稀疏列表,我可以使用sparseMatrix()将其转换为稀疏矩阵:

> myMatrix 
  a b c  
a . 1 2
b 1 . .
c 2 . .

不过,现在我想将其转换为dist对象。我尝试了作为.dist(myMatrix),但我得到的错误是"问题太大",对于作为.dst()。我还尝试使用myMatrix=myMatrix*lower.tri(myMatrix。

谢谢你的帮助!

"dist"的对象是密集对象。要从稀疏表示开始,将需要量级的向量

R> 0.5*(91000000*90999999)
[1] 4.1405e+15

元素(给予或接受对角线)。在R中,向量的最大长度是2^31-1:

R> 2^31 - 1
[1] 2147483647

这远远小于存储密集CCD_ 2对象所需的元素数量,因此这是不可能的,这也是CCD_。出于类似的原因,您将无法将数据的下三角版本存储为密集对象,因为它也被保存为具有相同长度限制的向量。

在这一点上,我认为你需要解释更多关于实际问题的信息,以及你想要相异对象做什么(在另一个问题中!)?您是否需要9100万个对象之间的所有差异,或者您是否可以从中获得一个样本,该样本将符合R向量的当前长度限制?

最新更新