1

我正在尝试在位于多个代理后面的远程服务器上下载 R 中的文件。某些东西 - 我无法弄清楚是什么 - 导致文件在我尝试在该服务器上访问它时被缓存返回,无论我是通过 R 还是只是通过 Web 浏览器。

我尝试cacheOK=FALSEdownload.file通话中使用,但没有效果。

有没有办法强制浏览器刷新/下载图像?我尝试在 URL 的末尾添加一个随机后缀:

download.file(url = paste("http://mba.tuck.dartmouth.edu/pages/faculty/ken.french/ftp/F-F_Research_Data_Factors_daily.zip?",
                          format(Sys.time(), "%d%m%Y"),sep=""), 
              destfile = "F-F_Research_Data_Factors_daily.zip", cacheOK=FALSE)

这会产生例如以下 URL:

http://mba.tuck.dartmouth.edu/pages/faculty/ken.french/ftp/F-F_Research_Data_Factors_daily.zip?17092012

当从远程服务器上的 Web 浏览器访问时,它确实返回了文件的最新版本。但是,当download.file在 R 中访问时,这会返回一个损坏的 zip 存档。WinRAR 和 R 的unzip函数都抱怨 zip 文件已损坏。

unzip("F-F_Research_Data_Factors_daily.zip")
1: In unzip("F-F_Research_Data_Factors_daily.zip") :
internal error in unz code

我不明白为什么通过 R 下载此文件会导致返回损坏的文件,而通过 Web 浏览器下载则没有问题。

任何人都可以提出一种从 R 中击败缓存的方法(对此我不抱希望),或者为什么download.file不喜欢我的 URL 并在其末尾添加 ?someRandomString 的原因?

4

1 回答 1

4

如果你使用它会起作用mode="wb"

download.file(url = paste("http://mba.tuck.dartmouth.edu/pages/faculty/ken.french/ftp/F-F_Research_Data_Factors_daily.zip?",format(Sys.time(),"%d%m%Y"),sep=""), 
          destfile = "F-F_Research_Data_Factors_daily.zip", mode='wb', cacheOK=FALSE)
于 2012-09-17T21:34:54.020 回答