2014-12-31 2 views
1

Я пытаюсь запустить следующий код в R:Обработка ошибок с помощью Lapply

player1_html=lapply(player1,readLines) 

где player1 является символьный массив из 15 символьных векторов, содержащих адреса различных страниц для чтения. Проблема я столкнулся в том, что некоторые страницы дают ошибку 404 из-за которой программа брейки дает следующее сообщение об ошибке:

Error in file(con, "r") : cannot open the connection 

Я хотел бы спросить, есть ли способ, которым я могу справиться с этим в lapply по игнорируя ссылки, которые дают ошибку. Кроме того, каков был бы нормальный подход к устранению такой ошибки при использовании readLines (не в ладах)?

+0

Возможно, эта ссылка поможет http://stackoverflow.com/questions/10847883/r-readlines-html-error – akrun

+1

Я думаю, вы должны взглянуть в 'try' или' tryCatch' –

ответ

0

Опять же, декоратор один из возможного хорошего пути:

strongify <- function(f) 
{ 
    function(...){ 
     tryCatch({ 
      f(...) 
     }, 
    error=function(e) return(NA) 
    }) 
} 

strongReadLines = strongify(readLines) 

player1_html = lapply(player1,strongReadLines) 

Давать вам NA при возникновении ошибки. Очевидно, что функция, которую вы украшаете, не должна возвращать NA ... или сутенер вашего декоратора!

+0

Да, я хочу эту ссылку для удаления из массива. Как это возможно? – Learner

+0

после размещения кода выше ... просто с игроком1 [! Is.na (player1_html)] –

Смежные вопросы