如何检查本地文件的存在

use*_*665 69 r

我创建了一个R markdown文件,首先从Web加载文件.我发现cache = TRUE有点不稳定所以我想在下载前检查下载的文件是否存在if条件.

当前代码 - 始终下载文件

fileURL <- "https://dl.dropbox.com/u/7710864/courseraPublic/samsungData.rda"
setInternet2(TRUE)
download.file(fileURL ,destfile="./data/samsungData.rda",method="auto")
load("./data/samsungData.rda")
Run Code Online (Sandbox Code Playgroud)

所需代码 - 仅在尚未下载的情况下上传

 destfile="./data/samsungData.rda"    
 fileURL <-
 "https://dl.dropbox.com/u/7710864/courseraPublic/samsungData.rda"   
 if (destFile doesNotExist) {
    setInternet2(TRUE)
    download.file(fileURL ,destfile,method="auto") }
    load("./data/samsungData.rda")
 }
 load(destfile)
Run Code Online (Sandbox Code Playgroud)

什么语法会给我条件"destFile doesNotExist"

ags*_*udy 77

您可以使用 tryCatch

  if(!file.exists(destfile)){
    res <- tryCatch(download.file(fileURL,
                              destfile="./data/samsungData.rda",
                              method="auto"),
                error=function(e) 1)
    if(dat!=1) load("./data/samsungData.rda") 
}
Run Code Online (Sandbox Code Playgroud)

  • `file.exists`(或`!file.exists`)似乎是真正的魔术,因为这是OP所要求的. (11认同)

use*_*665 24

根据@agstudy给出的答案

 destfile="./data/samsungData.rda" 
 fileURL <-
 "https://dl.dropbox.com/u/7710864/courseraPublic/samsungData.rda"   
 if (!file.exists(destfile)) {
    setInternet2(TRUE)
    download.file(fileURL ,destfile,method="auto") }
    load("./data/samsungData.rda")
 }
 load(destfile)
Run Code Online (Sandbox Code Playgroud)

  • 没有必要在条件块中包含`load(".data/samsungData.rda")`,因为如果文件不存在,则加载它两次. (7认同)

Nut*_*tan 9

检查工作目录中是否存在文件的简单方法是:which(list.files()=="nameoffile.csv")

这并没有完全回答他的问题,但我认为这可能对那些只想检查目录中是否有特定文件的人有所帮助.