С ?read.table
: Количество столбцов данных определяется по первым пяти строкам ввода (или по всему файлу, если в нем меньше пяти строк) или по длине имен столбцов, если указано и дольше. Возможно, это может быть неправильно, если fill или blank.lines.skip имеют значение true, поэтому при необходимости укажите col.names.
Итак, возможно, ваш файл данных не чистый. Более конкретный поможет импорт данных:
d = read.table("foobar.txt",
sep="\t",
col.names=c("id", "name"),
fill=FALSE,
strip.white=TRUE)
будет указывать точные столбцы, а fill=FALSE
заставит двухбалочный фрейм данных.