Widziałem w kilku przypadkach, że podczas read.table()
nie jest w stanie odczytać znakami tabulacji plik (na przykład stół adnotacji mikromacierzy) zwrócenie następujący błąd: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()
działa idealnie na tym samym pliku bez błędów. Myślę, że również prędkość read.csv()
jest wyższa niż read.table()
.
Jeszcze więcej: read.table()
robi bardzo szalony czytając plik mnie. Powoduje to ten błąd podczas czytania linii 100, ale kiedy kopiuję i wkleja linie od 90 do 110 tuż za nagłówkiem tego samego pliku, nadal powoduje błąd linii 100 + 21 (nowe linie zostały skopiowane na początku). Jeśli jest jakiś problem z tą linią, dlaczego nie zgłosi tego błędu podczas odczytu wklejonej linii na początku? Potwierdzam, że read.csv()
czyta ten sam plik bez błędu.
Czy masz pojęcie, dlaczego read.table()
nie jest w stanie odczytać tych samych plików, na których działa read.csv()
? Czy istnieje również jakikolwiek powód, aby używać read.table()
w każdym przypadku?
Przeczytaj także strona pomocy dla 'read.table()' w obszarze użycia pamięci, dlaczego może wydawać się zbyt powolna w przypadku dużych plików. – Chase
nie możemy odpowiedzieć na twoje (zaktualizowane) pytanie bez odtwarzalnego przykładu. Najczęstszymi problemami z czytaniem są (1) niewykryte znaki komentarza, (2) niedopasowane znaki cudzysłowu, (3) zmiany liczby pól w wierszu po pierwszych 5 wierszach pliku, gdy 'fill = TRUE'. Ponieważ 'read.csv' i' read.table' mają różne wartości domyślne dla 'comment',' quote' i 'fill', każdy z nich może być problemem. –
PS istnieje 8 kombinacji 'comment' /' quote'/'fill': możesz poeksperymentować z wszystkimi z nich i zobaczyć, jak różnią się wyniki - co może doprowadzić cię do odpowiedzi. 'count.fields()' jest również przydatny w diagnostyce. –