Подтвердить что ты не робот

Fread не может читать .csv файлы с первым столбцом пустым

Скажем, у меня есть первый test.csv, который выглядит как

,a,b,c,d,e

Если я попытаюсь прочитать его с помощью read.csv, он отлично работает.

read.csv("test.csv",header=FALSE)
#  V1 V2 V3 V4 V5 V6
#1 NA  a  b  c  d  e
#Warning message:
#In read.table(file = file, header = header, sep = sep, quote = quote,  :
#  incomplete final line found by readTableHeader on 'test.csv'

Однако, если я попытаюсь прочитать этот файл с помощью fread, я получаю вместо него ошибку.

require(data.table)
fread("test.csv",header=FALSE)
#Error in fread("test.csv", header = FALSE) : 
#  Not positioned correctly after testing format of header row. ch=','

Почему это происходит и что я могу сделать, чтобы исправить это?

4b9b3361

Ответ 1

Как для меня, моя проблема была только в том, что первая? строки моего файла имели отсутствующее значение ID.

Итак, я смог решить проблему, указав autostart достаточно далеко в файл, чтобы появилось непустое значение:

fread("test.csv", autostart = 100L, skip = "A")

Это гарантирует, что когда fread пытается автоматически идентифицировать sep и sep2, он делает это в хорошо отформатированном месте в файле.

Задание skip также гарантирует, что fread найдет правильную строку, в которой будут основываться имена столбцов.

Если в первом поле нет никаких значений для бездействия, вам лучше просто удалить это поле из CSV с помощью подхода Ричарда Скривена или найти и заменить в своем любимом текстовом редакторе.

Ответ 2

Я думаю, что для этой цели вы можете использовать атрибуты skip/select/drop функции fread.

fread("myfile.csv",sep=",",header=FALSE,skip="A")#to just skip the 1st column
fread("myfile.csv",sep=",",header=FALSE,select=c(2,3,4,5)) # to read other columns except 1
fread("myfile.csv",sep=",",header=FALSE,drop="A") #to drop first column

Ответ 3

Я пробовал сделать этот файл csv и запускать код. Кажется, теперь это работает - то же самое для других людей? Я думал, что это может быть проблема с отсутствием новой строки в конце (отсюда предупреждение от read.csv), но fread отлично справляется с тем, есть ли новая строка в конце или нет.