【问题标题】:R Markdown - How to prevent Knitr from repeatedly downloading a file?R Markdown - 如何防止 Knitr 重复下载文件?
【发布时间】:2015-06-07 23:13:41
【问题描述】:

在处理 R Markdown Rmd. 时,我可以阻止 Knitr 在每次编织 Markdown 时下载文件吗?

我的代码块是:

download.file(url = paste('https://d396qusza40orc.cloudfront.net/',
                      'repdata/data/StormData.csv.bz2',
                      sep = ''),
          destfile = './storm.csv.bz2',
          method = 'curl')) 

块的系统时间本身并没有那么重要:

user    system   elapsed 
0.893   1.139    28.825 

但也许有一种方法可以缓存下载或其他东西,这样我就可以更快地查看 HTML。

【问题讨论】:

  • 对于初学者,您可以使用knitr caching。如果即使缓存文件夹被删除(或出于任何其他原因不想使用缓存),您也希望它更永久,您可以将下载放在if 语句中,例如if (!file.exists('./storm.csv.bz2')) {
  • 非常有用的参考资料,谢谢大卫。

标签: r knitr r-markdown


【解决方案1】:

您需要在尝试下载之前检查文件是否存在。

   destfile <- './storm.csv.bz2'
    if (!file.exists(destfile))
    {
      your code
    }

【讨论】:

    【解决方案2】:

    使用httrGETwrite_disk,因为如果destfile 存在,write_disk 不会让GET 执行下载(类似于迷你缓存操作)。 GET 在幕后也使用了RCurl

    library(httr)
    
    try(GET(url, write_disk(destfile)))
    

    【讨论】:

      猜你喜欢
      • 2021-10-04
      • 2014-06-18
      • 2013-07-01
      • 1970-01-01
      • 2016-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-02
      相关资源
      最近更新 更多