使用download.file时,R markdown无法打开URL



*请注意,此问题仅在Windows上发生。

我有以下代码,可以在正常脚本或控制台中正常运行:

tdir <- tempdir()
stateurl <- "https://www2.census.gov/geo/tiger/GENZ2018/shp/cb_2018_us_state_500k.zip"
if(file.exists(paste(tdir,"/cb_2018_us_state_500k.shp",sep=""))==F){
download.file(stateurl, destfile = file.path(tdir, "States.zip"))
unzip(file.path(tdir,"States.zip"),exdir=tdir)}

但是,当把同一个脚本放在一个区块中,并试图在Rmarkdown中编织成HTML时,我会收到警告";无法打开URL连接">

我不知道为什么像下载文件这样简单的东西会在控制台中运行,而不会在RMarkdown中运行。

使用所提供的代码,我可以在大约50%的时间内重现错误,而没有明显的模式(即,从同一会话重复运行"Knit to HTML"将随机失败/工作(。

对我来说,如果我明确指定method = "libcurl"作为download.file的参数(而不是默认的method = "auto",它在Windows上使用"wininet"(,问题就会消失

tdir <- tempdir()
stateurl <- "https://www2.census.gov/geo/tiger/GENZ2018/shp/cb_2018_us_state_500k.zip"
if(file.exists(paste(tdir,"/cb_2018_us_state_500k.shp",sep=""))==F){
download.file(stateurl, destfile = file.path(tdir, "States.zip"), method = "libcurl")
unzip(file.path(tdir,"States.zip"),exdir=tdir)}

用这个";Knit to HTML";一直在工作(至少在我的10多项测试中(。

我也遇到了类似的问题。我可以使用download.file从控制台中的url引用下载jpeg,但当我在rmarkdown或quarto中使用相同的download.file调用时,我得到了一个错误:

download.file中的错误(mod_image,destfile="UA mod伤亡图像.jpg",:无法打开URLhttp://www.mil.gov.ua/assets/images/resources/69864/47cf8333f4e8e8e367187ddd3a11c2761a1bd0cf.jpeg'调用:.main…eval_with_user_handlers->eval->eval->下载.file执行已停止

(注意,这是MacOS 13.3。(

我没有使用download.file,而是使用了curl::curl_download,这在rmarkdown和quarto中起到了作用。

总之,download.file(url_for_image, destfile = "UA-MOD-casualty-image.jpg", method = "libcurl")
curl::curl_download(url_for_image, destfile = "UA-MOD-casualty-image.jpg", quiet = TRUE)
都在控制台中工作,但只有curl_download在rmarkdown或quarto中工作。

我不知道为什么下载.file在quarto和rmarkdown中失败。大概和编织者有一些互动。请注意,我明确地尝试将方法设置为"libcurl"。

最新更新