2014-01-09 60 views
0

我試圖讀取使用R A文件夾中的所有文件,但我總是有這樣那樣的錯誤:讀取文件夾中的文件中的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

剛剛檢查過,72個文件中有4個是空白的 –

回答

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

只是爲了說清楚......並關閉該問題妥善

的問題是,至少有一個文件是空的。通過錯誤時檢查文件名。