在R

时间:2016-05-06 09:13:04

标签: r memory vector export export-to-csv

我一直在寻找适合我的问题的答案,但没有找到确切或合适的答案。

我有一个大字符向量(大约400万个元素,大小超过3GB)。我想将这个大字符向量输出/导出为CSV文件,其中每个元素代表一行。

使用write.tablewrite.csvwrite.csv2导出此文件会导致内存分配问题。

目前,我已尝试RSQLite包中的fwrite包和data.table功能。两者似乎都没有因为不同的原因而起作用。

  • RQSLite方法花费了+4小时来处理,我最终不得不杀了它。
  • fwrite()函数要求输入data.frame。试图将大字符向量强制转换为data.frame,我又遇到了内存问题。

有谁知道解决这个问题的好方法?

(我使用的是Windows 64位计算机,16GB内存,500GB SSD,运行R版本3.2.5)

1 个答案:

答案 0 :(得分:1)

如评论所示,您可以将角色向量x转换为list,然后使用data.table::setDT通过引用将其转换为data.table ,即没有副本。所以它会是:

x <- list(x)
library(data.table)
setDT(x)

现在您可以使用例如data.table的新fwrite函数来创建csv文件。