R: неверная многобайтовая строка

Я использую read.delim (filename) без каких-либо параметров для чтения текстового файла с разделителями табуляции в R.

df = read.delim(file) 

Это работало по назначению. Теперь у меня есть странное сообщение об ошибке, и я не могу его понять:

 Error in type.convert(data[[i]], as.is = as.is[i], dec = dec, na.strings = character(0L)) : invalid multibyte string at '' Calls: read.delim -> read.table -> type.convert Execution halted 

Может ли кто-нибудь объяснить, что такое многобайтовая строка? Что означает fd? Существуют ли другие способы чтения файла табуляции в R? У меня есть заголовки столбцов и строки, у которых нет данных для всех столбцов.

Я понимаю, что это довольно поздно, но у меня была аналогичная проблема, и я решил, что опубликую то, что сработало для меня. Я использовал утилиту iconv (например, "iconv file.pcl -f UTF-8 -t ISO-8859-1 -c" ). Опция «-c» пропускает символы, которые невозможно перевести.

У меня была аналогичная странная проблема с файлом из программы e-prime (edat -> SPSS conversion), но потом я обнаружил, что есть много дополнительных кодировок, которые вы можете использовать. это сделало трюк для меня:

 tbl <- read.delim("dir/file.txt", fileEncoding="UCS-2LE") 

Если вы хотите решение R, вот небольшая функция удобства, которую я иногда использую, чтобы найти, где скрывается символ оскорбительного (multiByte). Обратите внимание, что это следующий символ, который печатается. Это работает, потому что print будет работать нормально, но substr вызывает ошибку при наличии многобайтовых символов.

 find_offending_character <- function(x, maxStringLength=256){ print(x) for (c in 1:maxStringLength){ offendingChar <- substr(x,c,c) #print(offendingChar) #uncomment if you want the indiv characters printed #the next character is the offending multibyte Character } } string_vector <- c("test", "Se\x96ora", "works fine") lapply(string_vector, find_offending_character) 

Я исправляю этот символ и запускаю его снова. Надеюсь, что это поможет кому-то, кто сталкивается с invalid multibyte string .

Это случилось со мной, потому что у меня был символ «авторского права» в одной из моих строк! Как только он был удален, проблема решена.

Хорошее эмпирическое правило, убедитесь, что символы, которые не отображаются на вашей клавиатуре, удаляются, если вы видите эту ошибку.

Я понял, что Leafpad является адекватным и простым текстовым редактором для просмотра и сохранения / конвертации в определенных наборах символов – по крайней мере, в Linux-мире.

Я использовал это, чтобы сохранить латинский-15 до UTF-8, и это сработало.

  • Объедините (rbind) кадры данных и создайте столбец с именем исходных кадров данных
  • Что такое замещающие функции в R?
  • Использование R для отображения всех файлов с указанным расширением
  • Как вставить элементы в вектор?
  • листинг содержимого файла данных R без загрузки
  • обнаружена ошибка segfault в R
  • multithreading с R?
  • Как вы конвертируете даты / время из одного часового пояса в другой в R?
  • Добавление текста в таблицу grid.table
  • определить параметр $ right с переменной в R
  • R: t-тест по всем столбцам
  • Давайте будем гением компьютера.