Получить "встроенные 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="", Это сработало для меня.

Другие вопросы по тегам