Получить "встроенные nul(s) найдены во входных данных" при чтении CSV с использованием read.csv()
Я читал в CSV-файл.
Код является:
mydata = read.csv("mycsv.csv", header=True, sep=",", quote="\"")
Получите следующее предупреждение:
Предупреждающее сообщение: В
scan(file = file, what = what, sep = sep, quote = quote, dec = dec
,: встроенные значения, найденные во входных данных
Теперь некоторые ячейки в моем CSV имеют пропущенные значения, которые представлены "".
Как мне написать этот код, чтобы я не получил предупреждение выше?
6 ответов
Ваш CSV может быть закодирован в UTF-16. Это не редкость при работе с некоторыми инструментами на базе Windows.
Вы можете попробовать загрузить CSV UTF-16 следующим образом:
read.csv("mycsv.csv", ..., fileEncoding="UTF-16LE")
Вы можете попробовать использовать skipNul = TRUE
вариант.
mydata = read.csv("mycsv.csv", quote = "\"", skipNul = TRUE)
От ?read.csv
Внедренные nuls во входной поток прервут поле, читаемое в данный момент, с предупреждением один раз за вызов сканирования. настройка
skipNul = TRUE
заставляет их игнорироваться.
Это сработало для меня.
Это не имеет ничего общего с кодировкой. Это проблема с чтением нулей в файле. Чтобы справиться с этим, вам нужно передать параметр "skipNul = TRUE".
например: neg = scan('F:/Natural_Language_Processing/negative-words.txt', what = 'character', comment.char = '', encoding = "UTF-8", skipNul = TRUE)
Может быть файл, который не имеет CRLF, может иметь только LF. Попробуйте проверить HEX-вывод файла.
Если так. Попробуйте запустить файл через awk:
awk '{printf "%s\r\n", $0}' file > new_log_file
У меня было то же сообщение об ошибке, и я обнаружил, что, хотя мои файлы имели расширения.csv и открывались без проблем в электронной таблице, они фактически были сохранены как "Все форматы", а не как "Текст CSV (.csv)".
Еще одно быстрое решение:
Дважды проверьте, что вы на самом деле читаете .csv
файл!
Я случайно читал .rds
файл вместо .csv
и получил эту "встроенную нулевую" ошибку.
В этих случаях убедитесь, что импортируемые данные не имеют символов "#", но в этом случае попробуйте использовать параметр comment.char=""
, Это сработало для меня.