在R中使用download.file之前,如何检查url中是否存在文件

在R中使用download.file之前,如何检查url中是否存在文件,r,try-catch,rcurl,R,Try Catch,Rcurl,我有一个问题,我不知道如何解决它。 我有一个直接下载一些文件的url列表 比如说 x<-list("https://www.ecb.europa.eu/paym/coll/assets/html/dla/ea_MID/ea_csv_200219.csv", "http://sdw.ecb.europa.eu/quickviewexport.do?SERIES_KEY=120.EXR.M.USD.EUR.SP00.A&type=csv") name_file<-list("n

我有一个问题,我不知道如何解决它。 我有一个直接下载一些文件的url列表

比如说

x<-list("https://www.ecb.europa.eu/paym/coll/assets/html/dla/ea_MID/ea_csv_200219.csv",
"http://sdw.ecb.europa.eu/quickviewexport.do?SERIES_KEY=120.EXR.M.USD.EUR.SP00.A&type=csv")

name_file<-list("name_1.csv","name_2.csv")

x您可以使用
HEAD
请求。在R中,它在程序包
httr
中提供。返回代码可在上找到。这可能有用

一个非常简单的函数可以是

urlFileExist <- function(url){
  HTTP_STATUS_OK <- 200
  hd <- httr::HEAD(url)
  status <- hd$all_headers[[1]]$status
  list(exists = status == HTTP_STATUS_OK, status = status)
}

lapply(x, urlFileExist)
#[[1]]
#[[1]]$exists
#[1] TRUE
#
#[[1]]$status
#[1] 200
#
#
#[[2]]
#[[2]]$exists
#[1] TRUE
#
#[[2]]$status
#[1] 200

urlFileExist非常感谢您的回答。非常有用,但最后我使用了函数try。我做了什么?我使用了这个解决方案:try(download.file(x,destfile=nse.folder,method='curl',quite=TRUE))
x<-list("https://www.ecb.europa.eu/paym/coll/assets/html/dla/ea_MID/",
"http://sdw.ecb.europa.eu/quickviewexport.do?")
urlFileExist <- function(url){
  HTTP_STATUS_OK <- 200
  hd <- httr::HEAD(url)
  status <- hd$all_headers[[1]]$status
  list(exists = status == HTTP_STATUS_OK, status = status)
}

lapply(x, urlFileExist)
#[[1]]
#[[1]]$exists
#[1] TRUE
#
#[[1]]$status
#[1] 200
#
#
#[[2]]
#[[2]]$exists
#[1] TRUE
#
#[[2]]$status
#[1] 200