read.csv vs. read.table



file-io (2)

В некоторых случаях я видел, что, хотя read.table() не может читать файл с разделителями табуляции (например, таблицу аннотаций микрочипа), возвращается следующая ошибка:

Error in scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings,  : 
line xxx did not have yyy elements

read.csv() отлично работает в одном файле без ошибок. Я также думаю, что скорость read.csv() также выше, чем read.table() .

Еще больше: read.table() делает очень сумасшедший, читая файл со мной. Он делает эту ошибку при чтении строки 100, но когда я копирую и вставляю строки от 90 до 110 сразу после главы того же файла, она по-прежнему делает ошибку строки 100 + 21 (новые строки копируются в начале). Если в этой строке есть какие-либо проблемы, почему она не сообщает об этой ошибке при чтении вставленной строки в начале? Я подтверждаю, что read.csv() читает тот же файл без ошибок.

Вы знаете, почему read.table() не может прочитать те же файлы, что read.csv() работает на нем? Также есть ли причина использовать read.table() в любом случае?

https://ffff65535.com


Не используйте read.table для чтения файлов с разделителями табуляции, используйте read.delim . (Это просто тонкая оболочка вокруг read.table но она устанавливает параметры для соответствующих значений)


read.csv - довольно тонкая оболочка вокруг read.table ; Я был бы очень удивлен, если бы вы не смогли точно воспроизвести поведение read.csv , предоставив правильные аргументы read.table . Однако некоторые из этих аргументов (например, способ обращения к кавычками или комментариям) могут изменить скорость и поведение функции.

В частности, это полное определение read.csv :

function (file, header = TRUE, sep = ",", quote = "\"", dec = ".", 
    fill = TRUE, comment.char = "", ...) {
     read.table(file = file, header = header, sep = sep, quote = quote, 
        dec = dec, fill = fill, comment.char = comment.char, ...)
}

так как указано, что это просто read.table с определенным набором опций.

Как указано в @Chase в комментариях ниже, страница справки для read.table() говорит так же, как и в разделе « Details :

read.csv и read.csv2 идентичны read.table, за исключением значений по умолчанию. Они предназначены для чтения файлов с разделителями-запятыми («.csv») или (read.csv2) вариант, используемый в странах, которые используют запятую как десятичную точку и точку с запятой в качестве разделителя полей.