2015-04-02 34 views
1

在使用R Markdown Rmd時,每次Markdown編織時,是否可以阻止Knitr下載文件?R Markdown - 如何防止Knitr重複下載文件?

我的代碼塊是:

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。

+3

對於初學者,您可以使用[knitr caching](http://yihui.name/knitr/demo/cache/)。如果您希望即使在刪除緩存文件夾時(或者出於任何其他原因不想使用緩存),它也會更永久化,您可以將下載放在if語句中,例如if(!file.exists ('./storm.csv.bz2')){' – 2015-04-02 21:11:32

+0

非常有用的參考,謝謝大衛。 – RDJ 2015-04-03 15:02:53

回答

5

您需要在嘗試下載之前檢查文件是否存在。

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)))