2016-09-26 3 views
0

Ich habe ein Problem aufgetreten.nicht in der Lage, große Dateien in r

Ich habe 10 große separate Dateien, Dateityp Datei ohne Spaltenüberschriften, die insgesamt in der Nähe von 4 GB sind, die zusammengeführt werden müssen. Mir wurde gesagt, dass es sich um Textdateien und Pipe-Begrenzungen handelt, daher habe ich die Dateierweiterung txt für jede Datei hinzugefügt, was hoffentlich nicht das Problem ist. R Studio abstürzt, wenn ich den folgenden Code verwenden ...

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") 

oder wenn ich versuche, so etwas zu tun ...

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)) 

ich Fehler wie

sehen
"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)" 

Dann sah ich, dass jemand eine Frage zu SO stellte, während ich diese Frage schreibe, here, also fragte ich mich, ob SQL-Befehl in R Studio oder SSMS verwendet werden kann, um diese großen Dateien zusammenzuführen? Wenn sie können, wie kann es zu verschmolzen werden. Wenn es möglich ist, bitte beraten Sie mich, wie dies zu tun ist. Ich werde mich im Internet umsehen.

Wenn es dann nicht möglich ist, was ist die beste Methode, diese ziemlich großen Dateien zusammenzuführen. Kann dies in R Studio erreicht werden oder gibt es Open Source?

Ich arbeite an einem PC, der 64bit Windows mit 8GB RAMs hat. Ich habe R- und SQL-Tags hinzugefügt, um zu sehen, welche Möglichkeiten es gibt.

Vielen Dank im Voraus, wenn mir jemand helfen kann.

Antwort

0

Ihr Computer verfügt nicht über genügend Speicher für die ausgewählten Vorgänge.

Sie haben 10 Dateien ~ 4 GB insgesamt. Wenn Sie die 10 Dateien zusammenführen, erstellen Sie ein weiteres Objekt, das ebenfalls etwa 4 GB groß ist, wodurch Sie dem Limit Ihres Rechners sehr nahe kommen.

Ihr Betriebssystem und R und was auch immer Sie sonst noch ausführen, verbrauchen auch RAM, also ist es keine Überraschung, dass Sie nicht mehr genügend Arbeitsspeicher haben.

Ich würde vorschlagen, einen schrittweisen Ansatz, wenn Sie keinen Zugriff auf eine größere Maching haben: - nehmen Sie die ersten beiden Dateien und füge sie zusammen. - Löschen Sie die Dateiobjekte von R und behalten Sie nur die zusammengefügte Datei. - Laden Sie das dritte Objekt und fusionieren Sie es mit der früheren Fusion. Wiederholen bis fertig.

+0

Clain - vielen Dank für Ihre Antwort. Wie ich versuche zu beraten, bekomme ich eine Warnmeldung. Bedeutet es, dass ich nicht alle Daten lese? "Warnmeldung: In scan (Datei = Datei, was = was, sep = sep, quote = Zitat, dec = dec,: EOF innerhalb der Zeichenfolge in Anführungszeichen". – DiscoDude

+0

@ValdClain - Ich habe Ihre Idee versucht und scheint es nicht alles zu lesen die Einträge. – DiscoDude