我有一些类似于以下文件名;
第一年:
blds_PANEL_DPK_8237_8283
blds_PANEL_DPR_8237_8283
blds_PANEL_MWK_8237_8283
哪个都位于同一文件路径中。但是在不同年份的不同文件路径中,我有非常相似的文件;
第二年:
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)