2009-09-10 3 views
17

У меня есть текстовый файл со столбцом id и name, и я стараюсь, чтобы прочитать его в кадр данных в R:текстовые файлы для чтения с помощью read.table

d = read.table("foobar.txt", sep="\t") 

Но по какой-то причине, много линий сливаются - например, в строке 500 моего кадра данных, я вижу что-то вроде

row 500: 500 Bob\n501\tChris\n502\tGrace 

[Так что, если мой оригинальный текстовый файл имеет, скажем, 5000 линий, размеры моего стола будут только в конечном итоге составляет 1000 строк и 2 столбца.]

У меня это случалось со мной несколько раз. Кто-нибудь знает, в чем проблема, или как ее исправить?

+0

Просьба представить файл (или его части), поскольку неясно, что вы сделали неправильно. –

+0

Из беглого взгляда на вашу ошибку, по крайней мере одна проблема может заключаться в том, что '500' и' Боб' не разделяются вкладкой. –

ответ

28

От ?read.table: Число столбцов данных определяется путем просмотра первых пяти строк ввода (или всего файла, если оно имеет менее пяти строк), или из длины col.names, если оно указано, и длиннее. Это может быть ошибочным, если fill или blank.lines.skip верны, поэтому при необходимости укажите col.names.

Так что, возможно, ваш файл данных не чист. Будучи более конкретно поможет импорт данных:

d = read.table("foobar.txt", 
       sep="\t", 
       col.names=c("id", "name"), 
       fill=FALSE, 
       strip.white=TRUE) 

определит точные столбцы и fill=FALSE заставит кадр данных два столбца.

+1

привет .. можно ли читать неструктурированные текстовые файлы? –

+0

Я думаю, что вы забыли имя первого параметра: '(file =" footer.txt ", ...)' – iTurki

+3

@JayNirgudkar Взгляните на 'scan' и' readLines'. – lmo

Смежные вопросы