2014-01-09 2 views
0

Я пытался читать все файлы в папке с помощью R, но я всегда получал ошибку, такие, как, что:Читайте файлы по папкам в R

>folder<-"/Volumes/cphg/projects/PROVIDE/freeze" #working directory 
>filelist<-list.files(folder) #all files in the directory 
>data<-vector("list", length(filelist)) #empty list 
>names(data)<-filelist 
>for (name in filelist) { 
+   data[[name]]<-read.table(paste(folder, name, sep="/"), header=T) 
+} 
Error in read.table(file = file, header = header, sep = sep, quote = quote, : 
    no lines available in input 

знает ли тело, что»здесь не так и как к почини это?

+2

Есть ли у вас пустые файлы? –

+0

Получить имя файла, в котором он остановился, и посмотреть этот файл, возможно, это какой-то странный формат или он пуст – Llopis

+0

Только что проверено, 4 из 72 файлов являются emptyl –

ответ

4

Вы можете использовать tryCatch и возвращать NULL, если чтение файла не выполняется. Тогда вы можете Filter результаты, чтобы исключить NULL

L <- setNames(lapply(filelist, function(x) { 
    tryCatch(read.table(file.path(folder, name)), error=function(e) NULL) 
}), filelist) 
data <- Filter(NROW, L) 
+0

Хорошая идея, но, может быть, лучше это знать не удалось с некоторыми файлами. – Llopis

0

Просто, чтобы понять ... и закрыть вопрос правильно

Проблема заключается в том, что есть по крайней мере один пустой файл. Проверьте имя файла, когда он через ошибку.

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