2015-06-05 14 views
5

Es scheint am intuitivsten, dass RTA-Dateien das schnellste Dateiformat für R sein können, aber beim Scannen einiger Stack-Posts scheint die Ladezeit für .csv oder andere Formate besser berücksichtigt worden zu sein. Gibt es eine definitive Antwort?Welche Dateiformate liest R am schnellsten?

+0

Dies ist eine sehr schwierige Frage richtig zu beantworten. Sie müssen in Erwägung ziehen, jede Dateilesefunktion in kompilierten und optimierten c- oder Fortran-Code umzuwandeln. Da Sie im Allgemeinen nicht über eine Auswahl an Eingabeformaten verfügen, es sei denn, Sie haben die Dateien ** in R ** erstellt, bin ich mir nicht sicher, ob die Antwort wirklich wichtig ist! –

Antwort

6

keine definitive Antwort, aber unten gibt Zeiten, es hat die gleiche Datenrahmen als .tab mit utils::read.delim() Datei eingelesen zu laden, readr::read_tsv(), data.table::fread() und als eine binäre .RData Datei timed die system.time() Funktion:

.tab mit utils::read.delim

system.time(
    read.delim("file.tab") 
) 
# user system elapsed 
# 52.279 0.146 52.465 

.tab mit readr::read_tsv

system.time(
    read_tsv("file.tab") 
)  
# user system elapsed 
# 23.417 0.839 24.275 

.tab mit data.table::fread

Bei @Roman ‚s Anfrage der gleiche ~ 500 MB-Datei in einer blasenbild 3 Sekunden geladen:

system.time(
    data.table::fread("file.tab") 
) 
# Read 49739 rows and 3005 (of 3005) columns from 0.400 GB file in 00:00:04 
# user system elapsed 
# 3.078 0.092 3.172 

.RData binäre Datei mit dem gleichen Datenrahmen

system.time(
    load("file.RData") 
) 
# user system elapsed 
# 2.181 0.028 2.210 

Klar nicht definitiv (Stichprobenumfang = 1!), Aber in meinem Fall mit einem 500MB Datenrahmen:

  1. Binary .RData ist schnellste
  2. data.frame::fread() ist ein enger zweite
  3. readr::read_tsv eine Größenordnung langsamer
  4. utils::read.x am langsamsten ist und nur halb so schnell wie readr
+1

Ich frage mich, wie 'fread' damit umgehen würde? Möchten Sie es ausprobieren? –

+0

Es gehandhabt es wahnsinnig schnell @ RomanLuštrik – Phil

+0

@Phil Ich bin mir ziemlich sicher, dass die Angabe der 'colClasses' wird die Lesezeit der Tsv-Dateien zu verbessern. Es könnte sich lohnen, diesen Vergleich einzubeziehen. – nrussell