【发布时间】:2016-09-01 07:12:27
【问题描述】:
我一直在寻找适合我的问题的答案,但没有找到确切或合适的答案。
我有一个大字符向量(大约 400 万个元素,大小超过 3GB)。我想将这个大字符向量输出/导出为 CSV 文件,其中每个元素代表一行。
使用write.table、write.csv 或write.csv2 导出此文件会导致内存分配问题。
目前,我已经尝试了RSQLite 包和data.table 包中的fwrite 函数。由于不同的原因,两者似乎都不起作用。
-
RQSLite方法需要 +4 个小时来处理,我最终不得不将其杀死。 -
fwrite()函数要求data.frame作为输入。试图将大字符向量强制转换为 data.frame,我又遇到了内存问题。
有人知道解决这个问题的好方法吗?
(我在 Windows 64 位机器上,16GB RAM,500GB SSD 并运行 R 版本 3.2.5)
【问题讨论】:
-
如果您使用的是 Windows,请查看
memory.size() -
如果你先使用
x <- list(x); setDT(x)然后使用fwrite呢?还有内存问题? -
我会先尝试 @docendodiscimus 的解决方案,如果仍然有问题,您可以随时将其分解成更小的部分,在
for循环中一次只执行 100,000 个元素. -
@docendodiscimus:工作完美!谢谢。您为什么不将其写为答案,以便我可以将其标记为正确答案。
-
@wake_wake,太好了,我会写一个简短的答案
标签: r memory vector export export-to-csv