如果文件存在于文件夹中,则读取它,否则跳过处理部分。

35

我正在读取多个*.csv文件,它们的名称和路径在运行时确定。

然而,有时会有不存在的文件。对于这种文件,我需要一种异常处理。

目前我是使用以下方式读取我的文件:

    companyFileName <- paste("C://Users//Prices//",companiesIsin,".csv")
df <- read.csv(gsub(" ","", companyFileName, fixed=TRUE), header = TRUE, sep = ";",stringsAsFactors=FALSE)

在文件夹中找不到文件时,我会收到错误提示。R语言中是否有类似异常处理的功能?

感谢您的回复!

2个回答

54
您可以使用函数file.exists检查文件是否存在。因此,在尝试读取文件之前,您可能会检查文件是否存在,以避免出现错误,例如:
if (file.exists(companyFileName))
   df <- read.csv(gsub(" ","", companyFileName, fixed=TRUE), header = TRUE, sep = ";",stringsAsFactors=FALSE)

编辑: 您还可以简化路径的创建,并使用 read.csv2 作为 ; 分隔符。 这使得它更易读。

f <- paste0("C://Users//Prices//",companiesIsin,".csv")
if (file.exists(f))
  df <- read.csv2(f, TRUE, stringsAsFactors=FALSE)

2
谢谢你的回答!顺便问一下,它检查的是哪个路径?因为我总是进入 else 语句。顺便说一句,我正在运行 Windows 7。 - user2051347

-1

这段代码可以用来检查一个文件是否存在于以日期格式命名的文件夹中,返回值为TRUE或FALSE。

setwd("D:\\FILEFOLDER")

datafile<-file.exists(paste0('DATA_',format(Sys.Date()-1,'%Y%m%d'),'.gz'))

voicefile<-file.exists(paste0('VOICE_TEXT_',format(Sys.Date()-1,'%Y%m%d'),'.gz'))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接