ho visto in diversi casi che, mentre read.table()
non è in grado di leggere un file delimitato scheda (ad esempio la tabella di annotazione di un microarray) restituendo il seguente errore:read.csv vs. read.table
Error in scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings, :
line xxx did not have yyy elements
read.csv()
funziona perfettamente sullo stesso file senza errori. Penso anche che la velocità di read.csv()
sia anche superiore a read.table()
.
Ancora più: read.table()
sta facendo molto pazzo leggendo un file di me. Rende questo errore durante la lettura della riga 100, ma quando copio e incollo le righe da 90 a 110 subito dopo la testa dello stesso file, commette comunque l'errore della riga 100 + 21 (nuove righe copiate all'inizio). Se c'è qualche problema con quella linea, perché non segnala questo errore mentre legge la riga incollata all'inizio? Confermo che read.csv()
legge lo stesso file senza errori.
Avete un'idea del motivo per cui read.table()
non è in grado di leggere gli stessi file che read.csv()
funziona su di esso? C'è anche qualche motivo per usare read.table()
in ogni caso?
Anche a leggere la pagina di aiuto per 'read.table()' nell'uso della memoria sul motivo per cui può apparire lenta per file di grandi dimensioni. – Chase
non possiamo rispondere alla tua domanda (aggiornata) senza un esempio riproducibile. I problemi di lettura più comuni sono (1) caratteri di commento non rilevati, (2) virgolette senza corrispondenza, (3) variazioni nel numero di campi per riga dopo le prime 5 righe del file quando 'fill = TRUE'. Poiché 'read.csv' e' read.table' hanno valori predefiniti diversi per 'comment',' quote' e 'fill', ognuno di questi potrebbe essere il problema. –
PS ci sono 8 combinazioni di 'comment' /' quote'/'fill': puoi sperimentarle tutte e vedere come i risultati differiscono - questo potrebbe portarti alla risposta. 'count.fields()' è utile anche per la diagnostica. –