Создать функцию, чтобы избежать ошибки URL в R для цикла - PullRequest
0 голосов
/ 17 сентября 2018

Я зацикливаюсь на .csv, заполненном URL-адресами, чтобы очистить веб-сайт (авторизация очистки).

Я использовал функцию trycatch, чтобы избежать разрывов в цикле for. Но я заметил, что он останавливается для некоторых URL (используя download.file).

Итак, я сейчас использую «Это действительный URL? » функция взята из этого поста: [ Очистить с помощью петли и избежать ошибки 404

url_works <- function(url){
tryCatch(
    identical(status_code(HEAD(url)),200L), 
    error = function(e){
        FALSE
    })
}

Но даже с этой функцией и выполнением цикла только в том случае, если результат функции TRUE, в какой-то момент мой цикл прерывается на некоторые URL-адреса, и я получаю следующую ошибку:

> HTTP status was '500 Internal Server Error'

Я хотел бы понять эту ошибку, чтобы добавить этот случай в функцию URL, чтобы она игнорировалась в случае повторного появления этого типа URL.

Есть мысли? Спасибо!

1 Ответ

0 голосов
/ 17 сентября 2018

Ваш tryCatch синтаксис неправильный, я также изменил сообщение об ошибке, чтобы напечатать ошибку:

Универсальный tryCatch выглядит так:

tryCatch({
    operation-you-want-to-try
   }, error = function(e) do-this-on-error
)

Итак, для вашего кода:

url_works <- function(url){
    tryCatch({
        s1 <- status_code(HEAD(url))
        }, error = function(e) print(paste0(url, " ", as.character(e)))
    )
    identical(s1, 200L)
}
...