我有一个非常大的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向量的当前长度限制?