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?
Antwort
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:
- Binary
.RData
ist schnellste data.frame::fread()
ist ein enger zweitereadr::read_tsv
eine Größenordnung langsamerutils::read.x
am langsamsten ist und nur halb so schnell wiereadr
Ich frage mich, wie 'fread' damit umgehen würde? Möchten Sie es ausprobieren? –
Es gehandhabt es wahnsinnig schnell @ RomanLuštrik – Phil
@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
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! –