R - read.table импортирует половину набора данных - без ошибок и предупреждений - PullRequest
3 голосов
/ 16 апреля 2011

У меня есть CSV-файл с ~ 200 столбцами и ~ 170K строк. Данные были тщательно подготовлены, и я знаю, что они правильно сформированы. Когда read.table завершается, я вижу, что примерно половина строк была импортирована. Здесь нет ни предупреждений, ни ошибок. Я установил параметры (warn = 2). Я использую 64-битную последнюю версию и увеличил лимит памяти до 10 гигабайт. Я тут почесал голову ... понятия не имею, как продолжить отладку.

Редактировать
Когда я сказал половину файла, я не имел в виду первую половину. Последнее прочтение наблюдения относится к концу файла .... так что оно кажется случайным.

Ответы [ 3 ]

10 голосов
/ 16 апреля 2011

Возможно, в файле есть символ комментария (#) (попробуйте установить параметр comment.char = "" в read.table). Также убедитесь, что опция цитаты установлена ​​правильно.

2 голосов
/ 16 апреля 2011

У меня была эта проблема до того, как я подошел к ней, состоял в том, чтобы читать по определенному количеству строк за раз, а затем объединять по факту.

df1 <- read.csv(..., nrows=85000) 
df2 <- read.csv(..., skip=84999, nrows=85000) 
colnames(df1) <- colnames(df2)

df <- rbind(df1,df2) 
rm(df1,df2)
1 голос
/ 06 апреля 2012

У меня была похожая проблема при чтении в большом текстовом файле, который имел "|" разделитель. О текстовом файле были разбросаны некоторые текстовые блоки, которые содержали кавычку ("), в результате чего функция read.xxx остановилась на предыдущей записи, не выдавая ошибку. Обратите внимание, что упомянутые текстовые блоки не были заключены в двойные кавычки; скорее, они тут и там содержался один символ двойной кавычки ("), который его отключил.

Я выполнил глобальный поиск и замену в текстовом файле, заменив двойную кавычку (") одинарной кавычкой ('), решив проблему (все строки были затем прочитаны без прерывания).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...