无法合并r中的大文件

时间:2016-09-26 11:03:53

标签: sql sql-server r

我遇到了一个问题。

我有10个大的单独文件,没有列标题的文件类型文件,总共接近4GB,需要合并。我被告知他们是文本文件和管道分隔,所以我在每个文件上添加了文件扩展名txt,我希望不是问题。当我使用以下代码时,R Studio崩溃了......

multmerge = function(mypath){
filenames=list.files(path=mypath, full.names=TRUE)
datalist = lapply(filenames, function(x){read.csv(file=x,header=F, sep   
= "|")})
Reduce(function(x,y) {merge(x,y, all=T)}, datalist)}
mymergeddata = multmerge("C://FolderName//FolderName")

或当我尝试做这样的事情时......

temp1 <- read.csv(file="filename.txt", sep="|")
:
temp10 <- read.csv(file="filename.txt", sep="|")

SomeData = Reduce(function(x, y) merge(x, y), list(temp1...,   
temp10))

我看到了诸如

之类的错误
"Error: C stack usage is too close to the limit r" and 

"In scan(file = file, what = what, sep = sep, quote = quote, dec = dec,  : 
 Reached total allocation of 8183Mb: see help(memory.size)"

然后,当我写这个问题时,我看到有人问了一个问题, here,所以我想知道SQL命令是否可以在R Studio或SSMS中用于合并这些大文件?如果他们可以如何合并到。如果可以,请告诉我如何做到这一点。我会在网上四处看看。

如果它不能,那么合并这些相当大的文件的最佳方法是什么。这可以在R Studio中实现还是有开源?

我正在使用64位Windows和8GB RAM的PC。我已经包含R和SQL标签,以查看有哪些选项。

如果有人可以帮助我,请提前致谢。

1 个答案:

答案 0 :(得分:0)

您的机器没有足够的内存用于您选择的操作。

你有10个文件〜总共4GB。 当您合并10个文件时,您创建了另一个大约4GB的对象,这使您非常接近机器的限制。

您的操作系统和R以及您正在运行的任何其他内容也会消耗RAM,因此RAM耗尽并不奇怪。

如果您无法使用更大的机器,我建议采取逐步的方法: - 获取前两个文件并合并它们。 - 从R中删除文件对象并仅保留合并的文件对象。 - 加载第三个对象并将其与先前的合并合并。 重复直到完成。