2015-06-05 10 views
5

Sembra molto intuitivo che i file .rdata possano essere il formato di file a digiuno per il caricamento di R, ma quando si analizzano alcuni dei post dello stack sembra che sia stata prestata maggiore attenzione al miglioramento dei tempi di caricamento per .csv o altri formati. C'è una risposta definitiva?Quali sono i formati di file letti in R più veloci?

+0

Questo è molto difficile, domanda per rispondere correttamente. È necessario prendere in considerazione la possibilità di convertire qualsiasi funzione di lettura dei file in codice c- o Fortran compilato e ottimizzato, ad esempio. Inoltre, poiché in genere non è possibile scegliere il formato di input a meno che non abbiate generato i file ** in R ** in primo luogo, non sono sicuro che la risposta sia davvero importante! –

risposta

6

Non una risposta definitiva, ma al di sotto sono momenti che ci voleva per caricare lo stesso dataframe letto come un file .tab con utils::read.delim(), readr::read_tsv(), data.table::fread() e come un file binario .RData cronometrato utilizzando la funzione di system.time():

.tab con utils::read.delim

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

.tab con readr::read_tsv

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

.tab con data.table::fread

Su richiesta dello stesso file ~ 500MB caricato in un vesciche 3 secondi @Roman s':

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 file binario dello stesso dataframe

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

Chiaramente non definitivo (dimensione del campione = 1!) Ma nel mio caso con un frame di dati da 500 MB:

  1. binario .RData è più veloce
  2. data.frame::fread() è un secondo vicino
  3. readr::read_tsv è un ordine di grandezza più lento
  4. utils::read.x è più lenta e solo la metà veloce come readr
+1

Mi chiedo come "fread" possa gestire questo? Ti va di provarlo? –

+0

L'ha gestito in modo follemente veloce @ RomanLuštrik – Phil

+0

@Phil Sono abbastanza sicuro che la specifica di 'colClasses' migliorerà il tempo di lettura dei file tsv. Potrebbe valere la pena includere questo confronto. – nrussell

Problemi correlati