我遇到了一个问题。
我有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标签,以查看有哪些选项。
如果有人可以帮助我,请提前致谢。
答案 0 :(得分:0)
您的机器没有足够的内存用于您选择的操作。
你有10个文件〜总共4GB。 当您合并10个文件时,您创建了另一个大约4GB的对象,这使您非常接近机器的限制。
您的操作系统和R以及您正在运行的任何其他内容也会消耗RAM,因此RAM耗尽并不奇怪。
如果您无法使用更大的机器,我建议采取逐步的方法: - 获取前两个文件并合并它们。 - 从R中删除文件对象并仅保留合并的文件对象。 - 加载第三个对象并将其与先前的合并合并。 重复直到完成。