在 R 中将大字符向量导出为 CSV 文件
Exporting large character vector as CSV-file in R
我一直在寻找适合我的问题的答案,但没有找到准确或合适的答案。
我有一个很大的字符向量(大约 400 万个元素,大小超过 3GB)。我想 output/export 这个大字符向量作为 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)
如评论所述,您可以将字符向量 x
转换为 list
,然后使用 data.table::setDT
将其转换为 data.table
参考,即没有复制。所以它会是:
x <- list(x)
library(data.table)
setDT(x)
现在您可以使用 data.table
的新 fwrite
函数来创建 csv 文件。
我一直在寻找适合我的问题的答案,但没有找到准确或合适的答案。
我有一个很大的字符向量(大约 400 万个元素,大小超过 3GB)。我想 output/export 这个大字符向量作为 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)
如评论所述,您可以将字符向量 x
转换为 list
,然后使用 data.table::setDT
将其转换为 data.table
参考,即没有复制。所以它会是:
x <- list(x)
library(data.table)
setDT(x)
现在您可以使用 data.table
的新 fwrite
函数来创建 csv 文件。