Ich habe sehr große Tabellen (30 Millionen Zeilen), die ich als Dataframes in R laden möchte. read.table()
hat viele praktische Funktionen, aber es scheint, dass die Implementierung eine Menge Logik enthält, die alles verlangsamen würde. In meinem Fall gehe ich davon aus, dass ich die Spaltentypen im Voraus kenne, dass die Tabelle keine Spaltenüberschriften oder Zeilennamen enthält und dass es keine pathologischen Zeichen gibt, über die ich mir Sorgen machen müsste.
Ich weiß, dass das Einlesen einer Tabelle als Liste mit scan()
kann recht schnell sein, z.B.:
datalist <- scan('myfile',sep='\t',list(url='',popularity=0,mintime=0,maxtime=0)))
Aber einige meiner Versuche, dies in einen Datenrahmen zu konvertieren, scheinen die Leistung des oben genannten um den Faktor 6 zu verringern:
df <- as.data.frame(scan('myfile',sep='\t',list(url='',popularity=0,mintime=0,maxtime=0))))
Gibt es eine bessere Möglichkeit, dies zu tun? Oder möglicherweise eine ganz andere Herangehensweise an das Problem?