У меня есть несколько имен файлов, которые выглядят следующим образом:
Год1:
blds_PANEL_DPK_8237_8283
blds_PANEL_DPR_8237_8283
blds_PANEL_MWK_8237_8283
Все они расположены в одном и том же пути к файлу.Однако в другом пути к файлу для другого года у меня есть очень похожие файлы:
Год 2:
blds_PANEL_MHG_9817_9876
blds_PANEL_HKG_9817_9876
blds_PANEL_DPR_9817_9876
Некоторые из файлов имеют те же имена, что и в предыдущие годы, но некоторые изимена меняются.Единственная часть имени, которая изменяется, - это MHG
, HKG
, DPR
разделы имени, blds_PANEL_
остается неизменным вместе с 9817_9876
.
Я создал paste0()
file_path = C:/Users...
product = blds
part_which_keeps_changing = HKG
weeks = 9817_9876
read.csv(paste0(file_path, product, product, part_which_keeps_changing, weeks, ".DAT"), header = TRUE)
Он работал хорошо для одного продукта, однако для новых продуктов я сталкиваюсь с некоторыми ошибками.Поэтому я пытаюсь загрузить данные, которые, возможно, игнорируют эту часть имени файла.
РЕДАКТИРОВАТЬ: Это, кажется, решить то, что я хочу сделать
temp <- list.files(paste0(files, product), pattern = "*.DAT")
location <- paste0(files, product, temp)
myfiles = lapply(location, read.csv)
library(plyr)
df <- ldply(myfiles, data.frame)
Как бы я ни работалв несколько другую проблему для некоторых файлов.
Если у меня есть следующее:
blds_PANEL_DPK_8237_8283
blds_PANEL_DPR_8237_8283
blds_PANEL_MWK_8237_8283
Возможно, что один из файлов не содержит информации, и когда я применяю lapply
это прерывает и останавливает загрузку данных при загрузке данных.
Можно ли пропустить эти файлы.Вот ошибка:
Error in read.table(file = file, header = header, sep = sep, quote = quote, :
no lines available in input
РЕДАКТИРОВАТЬ 2:
Кажется, это отменяет lapply
ошибки:
lapply_with_error <- function(X,FUN,...){
lapply(X, function(x, ...) tryCatch(FUN(x, ...),
error=function(e) NULL))
}
myfiles = lapply_with_error(location, read.delim)