【问题标题】:How do I check the existence of a downloaded file如何检查下载的文件是否存在
【发布时间】:2013-02-01 00:50:21
【问题描述】:

我创建了一个 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")

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

 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)

什么语法会给我条件“destFile doesNotExist”

【问题讨论】:

    标签: r


    【解决方案1】:

    你可以使用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") 
    }
    

    【讨论】:

    • 对,我第一次没有正确的代码。但是,您仅在已下载文件的情况下加载文件,而不是在已经下载文件的情况下加载文件 - 即这不是 OP 所要求的。此外,由于拼写错误,代码无法正常工作,并且包含两次已保存在变量中的字符串。多么愚蠢的反对票。
    • file.exists(或!file.exists)似乎是这里真正的魔力,因为这就是OP所要求的。
    • dat 在做什么?
    【解决方案2】:

    根据@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)
    

    【讨论】:

    • 没有必要在条件块中包含load(".data/samsungData.rda"),因为如果文件不存在,您将加载它两次。
    【解决方案3】:

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

    这并不能完全回答他的问题,但我认为这可能对只想检查特定文件是否存在于其目录中的人有所帮助。

    【讨论】:

    • 我发现您的答案的这种变体效果很好 TRUE %in% (list.files() == 'nameofile.csv') - 使用它有时会返回一个整数,有时会返回一个向量,其中这总是返回一个布尔值。
    猜你喜欢
    • 1970-01-01
    • 2018-06-21
    • 2011-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-23
    • 2016-09-26
    相关资源
    最近更新 更多