Я пытаюсь прочитать в первой строке приблизительно 13 000 текстовых файлов и сохранить их в векторе с именем flines26
. Одна проблема, с которой я сталкиваюсь, заключается в том, что несколько файлов (может быть, всего 100) абсолютно пустые, и поэтому fread()
выдает ошибку. Я попытался прочитать эти данные, используя как sapply, так и цикл for (с пониманием, что sapply()
должно быть быстрее).
Однако, используя код, который я написал, цикл for работает лучше. Моя попытка использовать sapply, кажется, работает медленно и приводит к вектору, который имеет два значения меньше, чем следовало бы.
Может кто-нибудь сказать, есть ли проблема с моей попыткой использовать sapply()
и tryCatch()
- или более вероятно, что эта проблема связана с какой-то аномалией в моих текстовых файлах?
Кроме того, если у кого-нибудь есть альтернативные способы быстрого чтения в первой строке большого количества текстовых файлов, эти предложения будут очень благодарны.
Использование sapply ()
firstline<-function(x){
tryCatch({
y<-fread(x,nrow=1, fill=T, header = F, sep = "")
},
error=function(e){
i<-match(x,files26)
cat("On iteration ",i,"ERROR :",conditionMessage(e), "\n")
y<<-"<ERROR>"
})
return(y)
}
flines26<-unlist(sapply(files26,firstline))
Использование цикла For
flines26<-c()
errors<-c()
for (i in 1:length(files26)){
tryCatch({
flines26[i]<-fread(files26[i],fill=T,nrow=1, header = F, sep = "")
},
error=function(e){
cat("On iteration ",i,"ERROR :",conditionMessage(e), "\n")
errors<<-c(errors,i)
flines26[i]<<-"<ERROR>"
})
}
Спасибо!