data.table::fread : "Error: ... embedded nul in string: '\0\0\0' "

Вопросы по статистическому пакету R. Не обязательно гео.
Ответить
nickleb
Гуру
Сообщения: 964
Зарегистрирован: 22 май 2010, 20:20
Репутация: 154

data.table::fread : "Error: ... embedded nul in string: '\0\0\0' "

Сообщение nickleb » 11 июн 2018, 17:17

Здравствуйте. При чтении файла по data.table::fread получаю "Error: ... embedded nul in string: '\0\0\0' " Как "прорваться" ?

Аватара пользователя
rhot
Гуру
Сообщения: 1727
Зарегистрирован: 25 янв 2011, 17:50
Репутация: 194
Ваше звание: доктор
Откуда: Архангельск

Re: data.table::fread : "Error: ... embedded nul in string: '\0\0\0' "

Сообщение rhot » 11 июн 2018, 17:20

А где текст кода, который ошибку выдаёт?
___________(¯`·.¸(¯`·.¸ Scientia potentia est _/ {SILVA}:::{FOSS}:::{GIS} \_ Знание сила ¸.·´¯)¸.·´¯)___________

nickleb
Гуру
Сообщения: 964
Зарегистрирован: 22 май 2010, 20:20
Репутация: 154

Re: data.table::fread : "Error: ... embedded nul in string: '\0\0\0' "

Сообщение nickleb » 11 июн 2018, 17:54

rhot писал(а):
11 июн 2018, 17:20
А где текст кода, который ошибку выдаёт?

Код: Выделить всё

DT.Today <- data.table::fread("Today_Csv.txt",
                        colClasses = vColTypes, sep = "\t",
                        stringsAsFactors = F)
ASCII-файл читаемый из 962 тыс. строк... Давал читать 960 тыс. - проходил без проблем...

Код: Выделить всё

DT.Today <- data.table::fread("Today_Csv.txt",
                        colClasses = vColTypes, sep = "\t",
                        nrows = 960000,
                        stringsAsFactors = F)

Код: Выделить всё

Read 960000 rows and 36 (of 36) columns from 0.230 GB file in 00:00:22
36-ть колонок у меня... Разделитель колонок - табулятор... Вектор с типами данных, который в "чтиво-функции":

Код: Выделить всё

> vColTypes
 [1] "double"    "character" "character" "character" "character" "character" "double"    "double"    "double"    "double"   
[11] "character" "double"    "double"    "character" "character" "character" "integer"   "character" "character" "double"   
[21] "double"    "double"    "integer"   "integer"   "integer"   "integer"   "character" "character" "character" "double"   
[31] "double"    "double"    "double"    "double"    "double"    "double"   
> 
Не диагностирует номер строки, которая её смущает... - Жаль!
А, когда читал через sep="," - и в одном из символьных столбцов были запятые - так любезно сообщила номер строки, где это встретилось впервые...

gamm
Гуру
Сообщения: 4049
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1050
Ваше звание: программист
Откуда: Казань

Re: data.table::fread : "Error: ... embedded nul in string: '\0\0\0' "

Сообщение gamm » 11 июн 2018, 18:45

похоже на юникод двухбайтовый в файле или типа того. Посмотрите кодировку, и укажите при чтении. И посмотрите в текстовом редакторе FAR, полистайте, начиная с 960000 строк ...

nickleb
Гуру
Сообщения: 964
Зарегистрирован: 22 май 2010, 20:20
Репутация: 154

Re: data.table::fread : "Error: ... embedded nul in string: '\0\0\0' "

Сообщение nickleb » 11 июн 2018, 19:05

gamm писал(а):
11 июн 2018, 18:45
похоже на юникод двухбайтовый в файле или типа того. Посмотрите кодировку, и укажите при чтении. И посмотрите в текстовом редакторе FAR, полистайте, начиная с 960000 строк ...
да, gamm, что-то в этом роде - вероятно, кириллица там... да ещё с "кракозябрами"... спасибо!

nickleb
Гуру
Сообщения: 964
Зарегистрирован: 22 май 2010, 20:20
Репутация: 154

Re: data.table::fread : "Error: ... embedded nul in string: '\0\0\0' "

Сообщение nickleb » 12 июн 2018, 06:33

... так прошло:

Код: Выделить всё

> tbl.Today <- readr::read_tsv("Today_Csv.txt")
> nrow(tbl.Today)
[1] 962076
> 
- в исходном ASCII ничего не менял... из tbl.Today сделал актуальную для дальнейшей работы выборку , которая насчитывает всего 68286 строки... в выборке "кракозябр" в символьных колонках нет... столбцы числовые (lon/lat), по которым эту выборку сделал, в изначальном "чтиве" прочитались корректно...

NB: readr::read_tsv медленнее читает, чем data.table::fread ... в работе с большими файлами data.table::fread пока (по моему опыту) - самая быстрая в R "читалка"

Ответить

Вернуться в «R»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 6 гостей