我一直在寻找适合我的问题的答案,但没有找到确切或合适的答案。
我有一个大字符向量(大约400万个元素,大小超过3GB)。我想将这个大字符向量输出/导出为CSV文件,其中每个元素代表一行。
使用write.table
,write.csv
或write.csv2
导出此文件会导致内存分配问题。
目前,我已尝试RSQLite
包中的fwrite
包和data.table
功能。两者似乎都没有因为不同的原因而起作用。
RQSLite
方法花费了+4小时来处理,我最终不得不杀了它。 fwrite()
函数要求输入data.frame
。试图将大字符向量强制转换为data.frame,我又遇到了内存问题。有谁知道解决这个问题的好方法?
(我使用的是Windows 64位计算机,16GB内存,500GB SSD,运行R版本3.2.5)
答案 0 :(得分:1)
如评论所示,您可以将角色向量x
转换为list
,然后使用data.table::setDT
通过引用将其转换为data.table
,即没有副本。所以它会是:
x <- list(x)
library(data.table)
setDT(x)
现在您可以使用例如data.table
的新fwrite
函数来创建csv文件。