fread
non ha (ancora) capacità di lettura fixed-width files.
Anch'io, spesso trovo file archiviati fastidiosamente come questo. Sentiti libero di aggiungere una richiesta di funzionalità su Github page.
Potrebbe non essere così nel tuo caso, ma la tua soluzione con sed
non funzionerebbe su un sacco di FWF che trovo perché non c'è spazio tra le colonne, ad es. vedrai stringhe come 00010 che in realtà comprendono 3 campi.
Se questo è il caso, avrete bisogno di un dizionario larghezza di campo, a questo punto sono disponibili diverse opzioni:
read.fwf
all'interno R
- Scrivi una
fwf
->csv
programma (io uso quello che ho ha scritto in Python
ed è piuttosto veloce, potrebbe condividere il codice se lo desideri) - fondamentalmente la versione potenziata del tuo approccio iniziale, in modo che tu non debba mai più trattare con il FWF
- Aprilo in Excel/LibreOffice/eccetera; c'è un lettore FWF nativo che tenta (solitamente male) di indovinare la larghezza delle colonne, che almeno fa la metà del lavoro di specificare la larghezza delle colonne per te. Quindi puoi salvarlo come .csv o qualsiasi altra cosa da lì.
Personalmente utilizzo la seconda opzione più spesso. read.fwf
non è ottimizzato come fread
quindi sarà probabilmente lento. E se hai un sacco (diciamo 20+) di FWF da leggere, la terza opzione è piuttosto noiosa.
Ma sono d'accordo che sarebbe bello avere qualcosa di simile incorporato nel fread
.
Come dire 'df <- read.table ('test.dat', header = T)'? – RHertel