read.table функция для чтения неполных данных в R

У меня есть большая таблица для чтения в R, и файл находится в формате .txt. В R я использую функцию read.table, но при ее чтении возникает ошибка. Появляется следующее сообщение об ошибке:

Error in scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings,  : 
  line 28 did not have 23 elements

Кажется, что (считая от 1-й строки без подсчета заголовка, как я указал skip=), данные в строке 28 имеют недостающие элементы. Я ищу способ автоматически исправить эту проблему, отфильтровав эту строку. На данный момент я не могу даже читать в файле, поэтому я не могу манипулировать в R ... Любые предложения приветствуются :)


person alittleboy    schedule 12.03.2014    source источник


Ответы (2)


Вот мой способ сделать это: вызвать read.table с параметром fill=TRUE и исключить строки без заполнения всех полей после (с вызовом count.fields).

Пример:

# 1. Data generation, and saving in 'tempfile'
cat("1 John", "2 Paul", "7 Pierre", '9', file = "tempfile", sep = "\n")

# 2. read the data:
data = read.table('tempfile',fill=T)

# 3. exclude incomplete data
c.fields = count.fields('tempfile')
data = data[ - (which(c.fields) != max(c.fields)),]

(отредактировано для автоматического получения количества строк)

person Jealie    schedule 12.03.2014

Эта ошибка также возникает, когда в ваших данных есть символ решетки (#).

В этом случае просто измените параметр comment.char на comment.char = "".

read.table("file.txt", comment.char = "")
person Enrique Ramos    schedule 12.03.2014