Read.csv() выдает ошибку

Я пытался прочитать файл excel, но, похоже, что-то не так. Файл хранится в папке «Документы» в формате Excel.

Это сообщения об ошибках, которые я получаю:

table <- read.csv(file.choose(),header=T,sep='\t')

Warning messages:
1: In read.table(file = file, header = header, sep = sep, quote = quote,  :
  line 1 appears to contain embedded nulls
2: In read.table(file = file, header = header, sep = sep, quote = quote,  :
  incomplete final line found by readTableHeader on 

Кроме того, поскольку это были предупреждения, я проигнорировал их. Но и в "таблицу" ничего не прочитано:

table
# [1] PK...
# <0 rows> (or 0-length row.names)

person Minal Murkhande    schedule 16.09.2014    source источник
comment
Связано: stackoverflow. ком/вопросы/24734911/   -  person Henry    schedule 05.07.2017
comment
а также: stackoverflow.com/questions/23209464/, включая выделение параметра skipNul = TRUE,   -  person Henry    schedule 05.07.2017


Ответы (7)


read.csv не читает файлы XLS(X), только файлы CSV. Попробуйте открыть файл Excel в Excel, экспортировать его в CSV и повторно ввести команду read.csv (в зависимости от языка вашей системы вы можете вместо этого использовать read.csv2).

person Waldir Leoncio    schedule 16.09.2014
comment
В сообщении об ошибке есть его команда: table<-read.csv(file.choose(),header=T,sep='\t') - person ydaetskcoR; 16.09.2014
comment
@ydaetskcoR, вы правы, я запутался с командой file.choose() (это действительно крутая функция, о которой я только что узнал). Редактирование. - person Waldir Leoncio; 16.09.2014

У меня была аналогичная ошибка, например:

A <- read.csv("tel.csv", sep = ",")
Error in read.table(file = file, header = header, sep = sep, quote = quote,  : 
  empty beginning of file
In addition: Warning messages:
1: In read.table(file = file, header = header, sep = sep, quote = quote,  :
  invalid input found on input connection 'tel.csv'
2: In read.table(file = file, header = header, sep = sep, quote = quote,  :
  line 1 appears to contain embedded nulls
3: In read.table(file = file, header = header, sep = sep, quote = quote,  :
  incomplete final line found by readTableHeader on 'tel.csv'

Для решения я пробовал:

A <- read.csv("tel.csv", sep = ",",
              fileEncoding="utf-16")

Это сработало.

person Rafa    schedule 29.05.2016
comment
Для меня это также оказалось проблемой кодировки файлов. см.: здесь и здесь - person Matt Munson; 13.08.2017
comment
Действительно, согласен. - person Rafa; 18.08.2017

Если вы пытаетесь прочитать файл xlsx, используйте библиотеку xlsx или экспортируйте их в виде файлов csv. read.table или read.csv не будут работать с файлами Excel.

install.packages("xlsx")
library(xlsx)
table <- read.xlsx("file.xlsx", 1)
person blakeoft    schedule 16.09.2014

Прежде всего, убедитесь, что ваш CSV на самом деле является CSV, а не файлом Excel (вы намекаете, что это может иметь место в вашем вопросе). read.csv читает текстовые файлы с разделителями и не может обрабатывать файлы Excel (либо .xls, либо .xlsx).

Если это текстовый файл с разделителями, то просмотр сообщения об ошибке выглядит так, как будто ваш CSV (ну, файл значений, разделенных табуляцией) может иметь некоторые пустые имена столбцов, которые read.csv() не может обработать.

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

Это предупреждения, потому что они не останавливают программу и не выходят из нее, а говорят, что все может быть не так, как вы ожидаете.

person ydaetskcoR    schedule 16.09.2014

По определению файл .csv имеет значения, разделенные запятыми; в вашем коде R вы используете вкладку ("\ t") в качестве разделителя. Если у вас есть настоящий CSV-файл, вы сможете ввести:

csvfile<-read.csv("csvfilename.csv")

или альтернативно

csvfile<-read.table("csvfilename.csv",sep=",")

хотя на самом деле должно хватить первой команды. Странно, что вам нужно указать вкладку для разделения столбцов в CSV-файле, если только Excel не сделал что-то шаткое с вашей таблицей данных.

Вы всегда можете использовать пакет xlsx в R, а затем записать файл в желаемом формате.

person user3482899    schedule 18.09.2014
comment
Csv имеет тенденцию просто подразумевать текстовый файл с разделителями. Большинство парсеров csv допускают выбор разделителя, и read.csv r не является исключением. - person ydaetskcoR; 19.09.2014

Файл, который вы пытаетесь прочитать, может быть файлом в кодировке UTF-16, как если бы он не был закодирован таким образом. Попробуйте с аргументом fileEncoding="UTF-16"

person Alex Joseph    schedule 31.03.2015

Одной из возможных причин является случайная попытка загрузить псевдоним файла вместо самого файла. В R для Mac попытка использовать read.csv для псевдонима приводит к ошибке, которую вы получили.

person Sandeep    schedule 14.12.2015